Rea*_*idy 33
什么样的按钮,表单控件和ActiveX控件都不应该影响使用的范围.
已知的问题是excel不能很好地跟踪使用范围.通过VBA对使用范围的任何引用都会将值重置为当前使用的范围.所以尝试运行这个子程序:
Sub ResetUsedRng()
Application.ActiveSheet.UsedRange
End Sub
Run Code Online (Sandbox Code Playgroud)
如果没有你可能会有一些格式悬挂.尝试清除/删除最后一行之后的所有单元格.
关于以上也见:
查找最后使用过的单元格的另一种方法:
Dim rLastCell As Range
Set rLastCell = ActiveSheet.Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False)
Run Code Online (Sandbox Code Playgroud)
更改搜索方向以查找第一个使用过的单元格.
JMa*_*Max 22
Readify做了一个非常完整的答案.但是,我想添加End
声明,你可以使用:
在列中的空白之前找到上次使用的单元格:
Sub LastCellBeforeBlankInColumn()
Range("A1").End(xldown).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
找到列中最后使用的单元格:
Sub LastCellInColumn()
Range("A" & Rows.Count).End(xlup).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
在行中的空白之前找到最后一个单元格:
Sub LastCellBeforeBlankInRow()
Range("A1").End(xlToRight).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
找到行中最后一个使用过的单元格:
Sub LastCellInRow()
Range("IV1").End(xlToLeft).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
请参阅此处以获取更多信息(以及解释为何xlCellTypeLastCell
不太可靠).
这里有一对函数来返回工作表的最后一行和col,基于Reafidy的解决方案.
Function LastRow(ws As Object) As Long
Dim rLastCell As Object
On Error GoTo ErrHan
Set rLastCell = ws.Cells.Find("*", ws.Cells(1, 1), , , xlByRows, _
xlPrevious)
LastRow = rLastCell.Row
ErrExit:
Exit Function
ErrHan:
MsgBox "Error " & Err.Number & ": " & Err.Description, _
vbExclamation, "LastRow()"
Resume ErrExit
End Function
Function LastCol(ws As Object) As Long
Dim rLastCell As Object
On Error GoTo ErrHan
Set rLastCell = ws.Cells.Find("*", ws.Cells(1, 1), , , xlByColumns, _
xlPrevious)
LastCol = rLastCell.Column
ErrExit:
Exit Function
ErrHan:
MsgBox "Error " & Err.Number & ": " & Err.Description, _
vbExclamation, "LastRow()"
Resume ErrExit
End Function
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
147241 次 |
最近记录: |