Как установить диапазон в качестве активной колонки? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть макрос Excel, который отлично работает для того, что мне нужно, но настроен на определенный столбец; это означает, что для того, чтобы запустить его для другого столбца, мне нужно либо отредактировать макрос, чтобы он указывал на новый столбец, либо сделать несколько копий макроса, указывающих на разные столбцы. Мое текущее решение выглядит так:

Dim rng As Range
Dim Lastrow As Integer

Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

Set rng = Range("J2:J" & Lastrow)

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

Set rng = Range("Activecolumn2 : activecolumn" & Lastrow)

Я очень новичок в кодировании, поэтому, если кто-то может объяснить свой ответ (или любую информацию, которую я могу предоставить, чтобы помочь получить ответ), это было бы очень полезно!

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

Вы можете использовать следующий код

  Dim rng As Range
    Dim Lastrow As Long
    Dim activeCol As Long

    activeCol = ActiveCell.Column
    Lastrow = ActiveSheet.Cells(Rows.CountLarge, activeCol).End(xlUp).Row


    With ActiveSheet
        Set rng = .Range(.Cells(2, activeCol), .Cells(Lastrow, activeCol))
    End With
0 голосов
/ 27 апреля 2018

Использовать параметры процедуры:

Sub YourMacro(strColumn As String)
    '...
    Dim rng As Range
    Dim Lastrow As Integer

    Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

    Set rng = Range(strColumn & "2:" & strColumn & Lastrow)
    '...
End Sub

Назовите это так:

Call YourMacro "J"
'Or
Call YourMacro "AI"
0 голосов
/ 27 апреля 2018

Нет активного столбца. Но вы можете использовать ActiveCell.Column, чтобы получить столбец активной ячейки.

Set Rng = Range(Cells(2, ActiveCell.Column), Cells(lastrow, ActiveCell.Column))

Также обратите внимание, что вам нужно определить Dim Lastrow As Long вместо Integer, потому что в Excel больше строк, чем может обработать Integer. Рекомендуется всегда использовать Long вместо Integer в VBA, поскольку использование Integer вообще не дает никаких преимуществ.

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