Подтвердить что ты не робот

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

У меня есть небольшой script в Excel/VB, который я пытаюсь получить. Все, что я хочу сделать, это выбрать динамический диапазон данных для копирования, но я не могу найти какую-либо помощь/код о том, как получить данные сетки (например, A11).

Вот код, который у меня есть из макрозаписей, который выбирает диапазон данных:

Range("D291:D380").Select

Я надеялся, что могу просто сделать Range(Current).Select или что-то, но это не сработает.

Любая помощь приветствуется.

4b9b3361

Ответ 1

Вы пробовали:

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

ActiveCell.Select

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

Selection.Range

Например:

Dim rng As Range
Set rng = Range(Selection.Address)

Ответ 2

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

Range(firstcol & firstrow & ":" & secondcol & secondrow).Select

Ответ 3

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

Предположим, что на вашем листе у вас есть номера от 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), то CurrentRegion всегда будет ссылаться на увеличенный диапазон (в данном случае A1: C4).

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

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

Ответ 4

Ключевое слово " Выбор" уже является объектом диапазона VBA, поэтому вы можете использовать его напрямую, и вам не нужно выбирать ячейки для копирования, например, вы можете быть на Листе 1 и выпускать эти команды:

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

Привет

Томас

Ответ 5

Попробуйте это

Dim app As Excel.Application = Nothing
Dim Active_Cell As Excel.Range = Nothing

Try
            app = CType(Marshal.GetActiveObject("Excel.Application"), Excel.Application)
 Active_Cell = app.ActiveCell

Catch ex As Exception
            MsgBox(ex.Message)
            Exit Sub
        End Try

'             .address will return the cell reference :)