Excel VBA - динамический диапазон для использования с каждым оператором - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь динамически определить диапазон в строке, например ctrl + down или ctrl + shift + down (до следующей пустой ячейки), который будет использоваться с оператором «For Each itm In rng».

Первоначально у меня было это статично, как это set rng = Range ("A4: A10")
Поэтому я попытался изменить это на что-то вроде

Dim rng As Range

Set rng = Range("A4").CurrentRegion.Rows.Count    

    For Each itm In rng
        ...        
    Next itm

Я тоже пробовал что-то подобное

Set StartCell = Range("A4")
rng = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row

Но, похоже, код не работает с оператором "For Each itm In rng"
Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Вы можете использовать .xlDown, это эквивалент нажатия Ctrl + Shift + вниз.

Dim rng As Range
Dim lastRow As Long

lastRow = Range("A4").End(xlDown).Row
Set rng = Range("A4:A" & lastRow)

For Each itm In rng
    'do something
Next itm
0 голосов
/ 05 июня 2019

Попробуйте, если это поможет:

Option Explicit
Sub Test()

    Dim LastRow As Long 'to find the last row on your range
    Dim MyRange As Range 'to reference the whole range
    Dim C As Range 'to loop through your range

    With ThisWorkbook.Sheets("MySheet") 'change MySheet for your sheet name
        LastRow = .Cells(4, 1).End(xlDown).Row 'last row, how? You go down to the last row and then ctrl + up
        Set MyRange = .Range("A4:A" & LastRow) 'dynamic range
        For Each C In MyRange
            'your code
        Next C
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...