it-roy-ru.com

Excel VBA - выберите динамический диапазон ячеек

Я хочу иметь возможность динамически выбирать диапазон ячеек (строка заголовка), где строка равна 1, но столбцы должны быть от 1 до последнего столбца, где «A» - первый столбец, а «M» - последний колонка. Я знаю, как найти последний столбец, но я не знаю, как изменить диапазон ниже, чтобы ввести первый и последний столбец как «A» и «M».

 Range("A1:M1").Select
8
HL8

Если вы хотите выбрать диапазон переменных, содержащий все ячейки заголовков:

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 со ссылкой на лист.

16
Tim Williams
sub selectVar ()
    dim x,y as integer
    let srange = "A" & x & ":" & "m" & y
    range(srange).select
end sub

Я думаю, что это самый простой способ.

6
akbar moradi

Так что это зависит от того, как вы хотите выбрать инкрементатор, но это должно работать:

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
RocketDonkey

Мне больше всего нравится использовать этот метод, он будет автоматически выбирать первый столбец до последнего используемого столбца. Однако, если последняя ячейка в первой строке или последняя ячейка в первом столбце пусты, этот код не будет рассчитываться надлежащим образом. Проверьте 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
0
aaa