我希望能够动态选择一系列单元格(标题行),其中行为1但列为1到最后一列,其中“A”是第一列,其中“M”是最后一栏。我知道如何找到最后一列,但我不知道如何修改以下范围以输入第一列和最后一列为“A”和“M”。
Range("A1:M1").Select
答案 0 :(得分:17)
如果要选择包含所有标题单元格的变量范围:
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(...))
时,最好使用工作表参考资格Range
和Cells
。
答案 1 :(得分:6)
sub selectVar ()
dim x,y as integer
let srange = "A" & x & ":" & "m" & y
range(srange).select
end sub
我认为这是最简单的方法。
答案 2 :(得分:4)
所以这取决于你想如何选择增量器,但这应该有效:
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
答案 3 :(得分:0)
我最喜欢使用此方法,它会自动选择第一列到最后一列使用。但是,如果第一行中的最后一个单元格或第一列中的最后一个单元格为空,则此代码将无法正确计算。检查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