Excel 查找范围中指定的最后一列

Excel 查找范围中指定的最后一列,excel,vba,range,Excel,Vba,Range,我需要找出某个列,该列是定义为的范围中的最后一列: Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange 将End(xlToRight)与activecell一起使用。第一件事优先 切勿使用UsedRange设置范围。我已经解释了为什么不应该使用UsedRange Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange 查找包含数据的最后一列和包含数据的最后一行,然后设置范围。因此,不会出现

我需要找出某个列,该列是定义为的范围中的最后一列:

Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange
将End(xlToRight)与activecell一起使用。

第一件事优先

切勿使用
UsedRange
设置范围。我已经解释了为什么不应该使用
UsedRange

Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange
查找包含数据的最后一列和包含数据的最后一行,然后设置范围。因此,不会出现从范围中查找最后一列的问题。这里有一个例子

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim lRow As Long, lCol As Long

    '~~> Set your worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
            '~~> Find Last Row
            lRow = .Cells.Find(What:="*", _
                          After:=.Range("A1"), _
                          Lookat:=xlPart, _
                          LookIn:=xlFormulas, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Row

            '~~> Find Last Column
            lCol = .Cells.Find(What:="*", _
                   After:=.Range("A1"), _
                   Lookat:=xlPart, _
                   LookIn:=xlFormulas, _
                   SearchOrder:=xlByColumns, _
                   SearchDirection:=xlPrevious, _
                   MatchCase:=False).Column
        Else
            lRow = 1: lCol = 1
        End If

        '~~> Set your range
        Set rng = .Range(.Cells(1, 1), .Cells(lRow, lCol))

        Debug.Print rng.Address
    End With
End Sub
子样本()
将ws设置为工作表
变暗rng As范围
变暗lRow尽可能长,lCol尽可能长
“~~>设置您的工作表
设置ws=ThisWorkbook.Sheets(“Sheet1”)
与ws
如果Application.WorksheetFunction.CountA(.Cells)为0,则
“~~>查找最后一行
lRow=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
搜索顺序:=xlByRows_
搜索方向:=xlPrevious_
MatchCase:=False)。行
“~~>查找最后一列
lCol=.Cells.Find(内容:=“*”_
之后:=.范围(“A1”)_
看:=xlPart_
LookIn:=xl公式_
SearchOrder:=xlByColumns_
搜索方向:=xlPrevious_
MatchCase:=False)。列
其他的
lRow=1:lCol=1
如果结束
“~~>设置您的范围
设置rng=.Range(.Cells(1,1),.Cells(lRow,lCol))
调试.打印注册表地址
以
端接头

RngSource.Columns(RngSource.Columns.Count).Column
看这是错误的做法:)想象一下Activecell是否在最后一列?很好的一点……我总是忘记“查找”。谢谢你引起我的注意。