[英]Finding last cell with content in a column -> why is my version of the code giving an error?
我想在特定列中找到包含信息的最后一個單元格,並在另一個線程中找到了下面列出的解決方案。 但是,我嘗試在不將“ 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
就像將Set用於工作簿和工作表一樣 ,您也必須將其用於其他對象 ,例如range 。
如果需要“ 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
您的代碼未執行的原因是由於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
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.