AME*_*AME 12 excel vba excel-vba
我想选择电子表格中的所有行和列.宏需要是动态的,因为每次调用宏时,列和行的数量往往会变化.它还需要能够考虑空行和列.
该子程序完成了部分过程:
Sub FindLastCell()
Cells.Find(What:="*", After:=[A1], SearchDirection:=xlPrevious).Select
End Sub
Run Code Online (Sandbox Code Playgroud)
它查找并选择电子表格中的最后一个单元格.现在我已经找到了电子表格中的最后一个单元格,如何选择单元格A1到LastCell作为范围?
bre*_*tdj 21
你需要为代码制作这些mod
Select,Find因为如果查找返回任何内容,这将导致错误.而是测试范围对象Is Not NothingFind可以按行和按列搜索.您需要确定这两个最后的行和列,以确定真正的上次使用的电池Range设置从第一个单元格(A1)到使用这两个Find范围确定的单元格的范围请参阅下面的代码
如果Find获得一个值,那么它将rng3从A1到由两个Finds 标识的最后一个使用的单元格的范围.

Sub GetRange()
Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range
Set rng1 = Cells.Find("*", [a1], xlFormulas, , xlByRows, xlPrevious)
Set rng2 = Cells.Find("*", [a1], xlFormulas, , xlByColumns, xlPrevious)
If Not rng1 Is Nothing Then
Set rng3 = Range([a1], Cells(rng1.Row, rng2.Column))
MsgBox "Range is " & rng3.Address(0, 0)
'if you need to actual select the range (which is rare in VBA)
Application.Goto rng3
Else
MsgBox "sheet is blank", vbCritical
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
aev*_*nko 11
在A列中选择A1到最后一个使用的单元格(包括中间的空白)就像这样简单:
Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Select
Run Code Online (Sandbox Code Playgroud)
要选择A1到整个工作表中使用的最后一个单元格(无论它是否在A列中使用):
Range("A1:A" & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row).Select
Run Code Online (Sandbox Code Playgroud)