如何将范围设置为活动列?

时间:2018-04-27 11:52:47

标签: excel-vba vba excel

我有一个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 :(得分:2)

没有活动列。但您可以使用ActiveCell.Column获取活动单元格的列。

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

另请注意,您需要定义Dim Lastrow As Long而不是Integer,因为Excel的行数多于Integer可以处理的行数。建议在VBA中使用always to use Long instead of Integer,因为使用Integer没有任何好处。

答案 1 :(得分:0)

您可以使用以下代码

  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

答案 2 :(得分:0)

使用程序参数:

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"