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