просто добавьте его в PATH: C: \ Windows \ System32 и запустите cmd как Administrator
Ключевое слово « 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
С уважением
Томас
Это может не помочь ответить на Ваш вопрос напрямую, но это то, что я нашел полезным при попытке работать с динамическими диапазонами, что может помочь Вам.
Предположим, что в вашем рабочем листе есть числа от 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 будет выбирать все смежные ячейки на основе опорной ячейки.
Если вы пытаетесь захватить диапазон с динамически генерируемой строкой, то вам просто нужно построить строку так:
Range(firstcol & firstrow & ":" & secondcol & secondrow).Select
Есть вы попробованный:
Для одной клетки:
ActiveCell.Select
Для нескольких отобранных клеток:
Selection.Range
, Например:
Dim rng As Range
Set rng = Range(Selection.Address)