【问题标题】:Excel VBA - select a dynamic cell rangeExcel VBA - 选择动态单元格范围
【发布时间】:2012-08-17 09:08:56
【问题描述】:

我希望能够动态选择一系列单元格(标题行),其中行为 1,但列为 1 到最后一列,其中“A”是第一列,“M”是最后一列。我知道如何找到最后一列,但我不知道如何修改以下范围以将第一列和最后一列输入为“A”和“M”。

 Range("A1:M1").Select

【问题讨论】:

    标签: excel range vba


    【解决方案1】:

    如果要选择包含所有标题单元格的变量范围:

    Dim sht as WorkSheet
    Set sht = This Workbook.Sheets("Data")
    
    'Range(Cells(1,1),Cells(1,Columns.Count).End(xlToLeft)).Select '<<< NOT ROBUST
    
    sht.Range(sht.Cells(1,1),sht.Cells(1,Columns.Count).End(xlToLeft)).Select
    

    ...只要该行没有其他内容。

    编辑:更新以强调在使用 Range(Cells(...), Cells(...)) 时,最好使用工作表参考来限定 RangeCells

    【讨论】:

      【解决方案2】:
      sub selectVar ()
          dim x,y as integer
          let srange = "A" & x & ":" & "m" & y
          range(srange).select
      end sub
      

      我认为这是最简单的方法。

      【讨论】:

      • 感谢这在 Excel 2016 中对我来说非常有效
      【解决方案3】:

      所以这取决于你想如何选择增量器,但这应该可行:

      Range("A1:" & Cells(1, i).Address).Select
      

      其中i 是代表您要选择的列的变量(1=A、2=B 等)。您想改为按列字母执行此操作吗?如果是这样,我们可以调整:)

      如果你也希望开头是动态的,你可以试试这个:

      Sub SelectCols()
      
          Dim Col1 As Integer
          Dim Col2 As Integer
      
          Col1 = 2
          Col2 = 4
      
          Range(Cells(1, Col1), Cells(1, Col2)).Select
      
      End Sub
      

      【讨论】:

        【解决方案4】:

        我最喜欢使用这种方法,它会自动选择第一列到最后一列。但是,如果第一行的最后一个单元格或第一列的最后一个单元格为空,则此代码将无法正确计算。查看link 了解其他动态选择单元格范围的方法。

        Sub DynamicRange()
        'Best used when first column has value on last row and first row has a value in the last column
        
        Dim sht As Worksheet
        Dim LastRow As Long
        Dim LastColumn As Long
        Dim StartCell As Range
        
        Set sht = Worksheets("Sheet1")
        Set StartCell = Range("A1")
        
        'Find Last Row and Column
          LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
          LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column
        
        'Select Range
          sht.Range(StartCell, sht.Cells(LastRow, LastColumn)).Select
        
        End Sub
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-04
          • 1970-01-01
          • 2014-01-16
          • 1970-01-01
          • 1970-01-01
          • 2015-11-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多