簡體   English   中英

查找列中包含內容的最后一個單元格->為什么我的代碼版本給出錯誤?

[英]Finding last cell with content in a column -> why is my version of the code giving an error?

我想在特定列中找到包含信息的最后一個單元格,並在另一個線程中找到了下面列出的解決方案。 但是,我嘗試在不將“ ws作為工作表”定義的情況下進行操作。 如果執行此操作,則編譯器不會在.cells()中接受“ .Rows”。 為什么?

附加問題:

  1. 在第一個版本中,“設置”的作用是什么? 我為什么需要這個?

在線程中找到的代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM