2013-04-30 102 views
0

我需要找出在一个范围内的最后一列是与定义的列最后一栏有activecell查找指定的范围

Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange 
+2

'RngSource.Columns(RngSource.Columns.Count).Column' – NickSlash 2013-04-30 21:26:14

+0

见[此](http://www.siddharthrout.com/2012/11/09/find-last- excel-sheet-vbavb-net /) – 2013-04-30 21:28:19

回答

0

使用结束(xlToRight)。

+1

这是错误的做法:)想象一下,如果Activecell位于最后一列? – 2013-04-30 21:30:30

+0

优秀点...我总是忘记'查找'。感谢您将此引起我的注意。 – Marshall 2013-04-30 21:44:13

1

第一

第一件事不要使用UsedRange来设置范围。我已经解释过HERE,为什么你不应该使用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