我正在 Microsoft Excel 中撰寫一個簡單的 VBA 腳本,它迭代汽車串列和有關汽車何時加油的資訊串列,以提供每輛汽車每月行駛多少公里的概覽。
我利用該Range.End屬性來計算包含資料的行數,然后遍歷索引。
Set Data = Worksheets("Tankninger") ' Danish for refuellings
NumRows = Data.Range("A1", Data.Range("A1").End(xlDown)).Rows.Count
For x = 1 To NumRows
' Process data
Next
一切似乎都運行良好,但是我發現如果有人對帶有加油資料的表格應用過濾器 - 例如僅顯示與汽車 A 相關的資料,那么NumRows將被分配最后一個可見行的索引。
示例:如果 refuling 表包含 100 條記錄,并且與汽車 A 相關的記錄位于第 50-60 行,則將NumRows分配值 60 - 導致我的腳本忽略最后 40 條記錄。
有沒有辦法讓Range.End屬性忽略應用于作業表的任何過濾器,或者我是否必須更改實作以使用 while 回圈?
uj5u.com熱心網友回復:
我最終for-loop用while-loop. 這允許 med 訪問每個單元格,而不管對表單應用的任何過濾。
Set Data = Worksheets("Tankninger") ' Danish for refuellings
r = 2
While Not IsEmpty(Cars.Cells(r, 1).value)
' Process data
Wend
uj5u.com熱心網友回復:
您可以做的是在代碼中添加以下內容以在找到最后一行資料之前洗掉過濾器。
'Remove all filters
Worksheets("Sheet1").Activate
On Error Resume Next
ActiveSheet.ShowAllData
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/438584.html
