我为所有人提供了一个有趣的(希望如此),并提前感谢!!
我收到了一份我正在创建的报告,该报告将从其他工作簿中获取表格并将其复制到默认图书中的单个报告页面。
重复此过程,直到扫描完所有工作簿。我使用LastRow和LastPos来维护我在工作表上的位置,以免覆盖,但我发现有些报告不使用我试图找到LastRow的列。
所以做Range("A65536").End(xlup).Select
这样的事情我必须检查每个报告,看看最长的列是什么。它可能是A或B,C或D?
我的问题是,是否有一种简单的方法可以检查这些值并查找最大值,以便分配给变量并使用?
谢谢,
杰夫
答案 0 :(得分:1)
我将这个功能用于我的所有" last"需要:
Function Last(choice As Long, rng As Range)
'Ron de Bruin, 5 May 2008
' 1 = last row
' 2 = last column
' 3 = last cell
Dim lrw As Long
Dim lcol As Long
Select Case choice
Case 1:
On Error Resume Next
Last = rng.Find(what:="*", _
After:=rng.Cells(1), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
Case 2:
On Error Resume Next
Last = rng.Find(what:="*", _
After:=rng.Cells(1), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
Case 3:
On Error Resume Next
lrw = rng.Find(what:="*", _
After:=rng.Cells(1), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
On Error Resume Next
lcol = rng.Find(what:="*", _
After:=rng.Cells(1), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
On Error Resume Next
Last = rng.Parent.Cells(lrw, lcol).Address(False, False)
If Err.Number > 0 Then
Last = rng.Cells(1).Address(False, False)
Err.Clear
End If
On Error GoTo 0
End Select
End Function
用法如下:
dim LR as Long
LR = Last(1,Sheet1.Cells)