Получить текущую ячейку в Excel VBA

просто добавьте его в PATH: C: \ Windows \ System32 и запустите cmd как Administrator

22
задан Ben McCormack 4 February 2010 в 18:21
поделиться

4 ответа

Ключевое слово « Selection » уже является объектом диапазона vba, поэтому вы можете использовать его напрямую, и вам не нужно выбирать ячейки для копирования, например, вы можете находиться на Sheet1 и запускать эти команды :

ThisWorkbook.worksheets("sheet2").Range("namedRange_or_address").Copy
ThisWorkbook.worksheets("sheet1").Range("namedRange_or_address").Paste

Если это множественный выбор, вы должны использовать объект Area в цикле for:

Dim a as Range
For Each a in ActiveSheet.Selection.Areas
    a.Copy
    ThisWorkbook.worksheets("sheet2").Range("A1").Paste
Next

С уважением

Томас

2
ответ дан 29 November 2019 в 05:07
поделиться

Это может не помочь ответить на Ваш вопрос напрямую, но это то, что я нашел полезным при попытке работать с динамическими диапазонами, что может помочь Вам.

Предположим, что в вашем рабочем листе есть числа от 100 до 108 в ячейках A1:C3:

          A    B    C  
1        100  101  102
2        103  104  105
3        106  107  108

Затем, чтобы выбрать все ячейки, вы можете использовать свойство CurrentRegion:

Sub SelectRange()
Dim dynamicRange As Range

Set dynamicRange = Range("A1").CurrentRegion

End Sub

Преимущество заключается в том, что если вы добавите новые строки или столбцы в ваш блок чисел (например, 109, 110, 111), то текущийРегион всегда будет ссылаться на увеличенный диапазон (в данном случае A1:C4).

Я довольно часто использую CurrentRegion в своем VBA-коде и нахожу его наиболее полезным при работе с диапазонами с дисмациальными размерами. Также он избавляет от необходимости жестко задавать диапазоны в своем коде.

В заключение, в моём коде вы увидите, что я использовал A1 в качестве опорной ячейки для CurrentRegion. Он также будет работать независимо от того, на какую ячейку вы ссылаетесь (попробуйте: например, заменить A1 на B2). Причина в том, что CurrentRegion будет выбирать все смежные ячейки на основе опорной ячейки.

2
ответ дан 29 November 2019 в 05:07
поделиться

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

Range(firstcol & firstrow & ":" & secondcol & secondrow).Select
2
ответ дан 29 November 2019 в 05:07
поделиться

Есть вы попробованный:

Для одной клетки:

ActiveCell.Select

Для нескольких отобранных клеток:

Selection.Range

, Например:

Dim rng As Range
Set rng = Range(Selection.Address)
27
ответ дан 29 November 2019 в 05:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: