我想在特定列中找到包含信息的最后一个单元格,并在另一个线程中找到了下面列出的解决方案。但是,我尝试在不将“ ws作为工作表”定义的情况下进行操作。 如果执行此操作,则编译器不会在.cells()中接受“ .Rows”。为什么?
其他问题:
在线程中找到代码:
Sub testprint_UtilAnal()
Dim ws As Worksheet
Dim xrowrange As Range
Dim xrowprint As Long
Set ws = Sheets("Database_UtilAnal")
With ws
Set xrowrange = .Cells(.Rows.Count, "B").End(xlUp)
Set xrowprint = xrowrange.Rows
End With
End Sub
我的代码:
Sub testprint_UtilAnal_Alt()
Dim xrowrange As Range
Dim xrowprint As Long
xrowrange = Sheets("Database_UtilAnal").Cells(.Rows.Count, "B").End(xlUp)
xrowprint = xrowrange.Rows
End Sub
答案 0 :(得分:1)
就像您对工作簿和工作表使用设置一样,您也必须将其用于其他对象 ,例如范围。
如果您需要“ B ”列中的最后一个单元格(对象),则可以使用以下方法:
Sub testprint_UtilAnal()
Dim xRowRange As Range
With Sheets("Database_UtilAnal")
Set xRowRange = .Cells(.Rows.Count, "B").End(xlUp)
End With
Debug.Print xRowRange.Address
Set xRowRange = Nothing
End Sub
如果仅需要最后一行(数字),则可以使用以下方法:
Sub testprint_UtilAnal()
Dim xRowPrint As Long
With Sheets("Database_UtilAnal")
xRowPrint = .Cells(.Rows.Count, "B").End(xlUp).Row
End With
Debug.Print xRowPrint
End Sub
以下两个版本演示了如何使用另一个版本:
Sub testprint_UtilAnal()
Dim xRowPrint As Long
Dim xRowRange As Range
With Sheets("Database_UtilAnal")
Set xRowRange = .Cells(.Rows.Count, "B").End(xlUp)
xRowPrint = xRowRange.Row
End With
Debug.Print xRowRange.Address
Debug.Print xRowPrint
Set xRowRange = Nothing
End Sub
Sub testprint_UtilAnal()
Dim xRowPrint As Long
Dim xRowRange As Range
With Sheets("Database_UtilAnal")
xRowPrint = .Cells(.Rows.Count, "B").End(xlUp).Row
Set xRowRange = .Cells(xRowPrint, "B")
End With
Debug.Print xRowPrint
Debug.Print xRowRange.Address
Set xRowRange = Nothing
End Sub
答案 1 :(得分:1)
您的代码未执行的原因是由于Sheets("Database_UtilAnal").Cells(.Rows.Count, "B").End(xlUp)
失败的片段是 .rows.Count
想象这的最好方法是可视化With
语句。出于各种原因,您可以说With
语句会将所述语句的参数附加到任何前导“。”。
也就是说
With ThisWorkbook.Worksheets(1)
.Range("A1")
End With
与
相同ThisWorkbook.Worksheets(1).Range("A1")
那么Sheets("Database_UtilAnal").Cells(.Rows.Count, "B").End(xlUp)
为什么不能成功执行?
注意开头的“。”在.Rows.Count
。如果没有With
语句,编译器将看不到任何要追加的内容,因此无法执行。
编辑:
Set
关键字用于将对象(例如Range("A1")
)分配给某些非原始数据类型(例如Range
)。