Excel VBA-выбор динамического диапазона ячеек
Я хочу иметь возможность динамически выбирать диапазон ячеек (строка заголовка), где строка равна 1, но столбцы с be для 1 до последнего столбца, где "A" является первым столбцом и где "M" является последним столбцом. Я знаю, как найти последний столбец, но я не знаю, как изменить диапазон ниже, чтобы ввести первый и последний столбец как "A" и "M".
Range("A1:M1").Select
4 ответов
если вы хотите выбрать диапазон переменных, содержащий все ячейки заголовков:
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
...пока в этой строке нет другого содержимого.
EDIT: обновлено, чтобы подчеркнуть, что при использовании Range(Cells(...), Cells(...))
это хорошая практика, чтобы квалифицировать как Range
и Cells
со ссылкой на рабочий лист.
sub selectVar ()
dim x,y as integer
let srange = "A" & x & ":" & "m" & y
range(srange).select
end sub
Я думаю, что это самый простой способ.
поэтому это зависит от того, как вы хотите выбрать инкремент, но это должно работать:
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
мне больше всего нравится использовать этот метод, он автоматически выберет первый столбец для последнего используемого столбца. Однако если последняя ячейка в первой строке или последняя ячейка в первом столбце пусты, этот код не будет вычисляться должным образом. Проверьте ссылке для других методов динамически выбирать диапазон ячеек.
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