使用end屬性
在ExcelVBA中,使用End(xlUp)查詢最後一行是最常使用且最為簡單的方法,它假設要有一列總包含有資料(數字、文字和公式等),並且在該列中最後輸入資料的單元格的下一行不會包含資料,因此不必擔心會覆蓋掉已有資料。但該方法有兩個缺點:
(1) 僅侷限於查詢指定列的最後一行。
(2) 如果該列中最後一行被隱藏,那麼該隱藏行將被視作最後一行。因此,在最後一行被隱藏時,其資料可能會被覆蓋。但該列中間的隱藏行不會影響查詢的結果。
最底行/最末行/最後一行:
MsgBox range("a1").end(xlup).row 或者
MsgBox range("a" & cells.rows.count).end(xlup).row
最右行/最後邊一行:
MsgBox range("a1").end(xlright).column
MsgBox range("a" & celles.columns.count).end(xlleft).column
Find方法在當前工作有資料中進行查詢,不需要指定列,也可以確保不會意外地覆蓋掉已有資料。其中,引數LookIn指定所查詢的型別,有三個常量可供選擇,即xlValues、xlFormulas和xlComments。
(1) 常量xlFormulas將包含零值的單元格作為有資料的單元格。(當設定零值不顯示時,該單元格看起來為空,但該引數仍將該單元格視為有資料的單元格)
(2) 常量xlValues將包含零值的單元格(如果設定零值不顯示時)作為空白單元格,此時,若該單元格在最後一行,則Find方法會認為該單元格所在的行為空行,因此,該單元格中的內容可能會被新資料所覆蓋。
[注:在Excel中,選擇選單“工具”——“選項”,在開啟的“選項”對話方塊中,選擇“檢視”選項卡,將其中的“零值”前的複選框取消選中,則工作表中的零值都不會顯示]
如果在引數LookIn中使用常量xlValues的話,還存在一個問題是:如果您將最後一行隱藏,則Find方法會認為倒數第二行是最後一行,此時您在最後一行的下一行輸入資料,則會將實際的最後一行的資料覆蓋。
您可以在隱藏最後一行與不隱藏最後一行,或者是最後一行顯示零值與不顯示零值時,執行下面的示例程式碼04,看看所得的結果有什麼不同。
"獲取最後一行
MsgBox "最後一行是第" & Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlFormulas, SearchDirection:=xlPrevious).EntireRow.Row & “行”
UsedRange方法可用於在工作表中已使用區域查詢最後一行,該區域包括可能以前使用過的任何單元格,但現在其中的資料被刪除了,比如目前的工作表中只有第1行至第5行共5行,其它行都無資料,但在第6行中有些單元格以前使用過(可能僅僅格式化或內容清除了,總之該行現在不含有資料),那麼第6行也包含在該已使用的區域中。此外,如果最後一行被隱藏,那麼會將因此,使用該方法查詢最後一行是無規律且不可靠的,它通常可能會得到預料不到的結果。
MsgBox "最後一行是第" & sheets(“工作表名稱”).usedrange.row.count & “行”
使用end屬性
在ExcelVBA中,使用End(xlUp)查詢最後一行是最常使用且最為簡單的方法,它假設要有一列總包含有資料(數字、文字和公式等),並且在該列中最後輸入資料的單元格的下一行不會包含資料,因此不必擔心會覆蓋掉已有資料。但該方法有兩個缺點:
(1) 僅侷限於查詢指定列的最後一行。
(2) 如果該列中最後一行被隱藏,那麼該隱藏行將被視作最後一行。因此,在最後一行被隱藏時,其資料可能會被覆蓋。但該列中間的隱藏行不會影響查詢的結果。
最底行/最末行/最後一行:
MsgBox range("a1").end(xlup).row 或者
MsgBox range("a" & cells.rows.count).end(xlup).row
最右行/最後邊一行:
MsgBox range("a1").end(xlright).column
MsgBox range("a" & celles.columns.count).end(xlleft).column
使用find方法Find方法在當前工作有資料中進行查詢,不需要指定列,也可以確保不會意外地覆蓋掉已有資料。其中,引數LookIn指定所查詢的型別,有三個常量可供選擇,即xlValues、xlFormulas和xlComments。
(1) 常量xlFormulas將包含零值的單元格作為有資料的單元格。(當設定零值不顯示時,該單元格看起來為空,但該引數仍將該單元格視為有資料的單元格)
(2) 常量xlValues將包含零值的單元格(如果設定零值不顯示時)作為空白單元格,此時,若該單元格在最後一行,則Find方法會認為該單元格所在的行為空行,因此,該單元格中的內容可能會被新資料所覆蓋。
[注:在Excel中,選擇選單“工具”——“選項”,在開啟的“選項”對話方塊中,選擇“檢視”選項卡,將其中的“零值”前的複選框取消選中,則工作表中的零值都不會顯示]
如果在引數LookIn中使用常量xlValues的話,還存在一個問題是:如果您將最後一行隱藏,則Find方法會認為倒數第二行是最後一行,此時您在最後一行的下一行輸入資料,則會將實際的最後一行的資料覆蓋。
您可以在隱藏最後一行與不隱藏最後一行,或者是最後一行顯示零值與不顯示零值時,執行下面的示例程式碼04,看看所得的結果有什麼不同。
"獲取最後一行
MsgBox "最後一行是第" & Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlFormulas, SearchDirection:=xlPrevious).EntireRow.Row & “行”
使用usedrange屬性UsedRange方法可用於在工作表中已使用區域查詢最後一行,該區域包括可能以前使用過的任何單元格,但現在其中的資料被刪除了,比如目前的工作表中只有第1行至第5行共5行,其它行都無資料,但在第6行中有些單元格以前使用過(可能僅僅格式化或內容清除了,總之該行現在不含有資料),那麼第6行也包含在該已使用的區域中。此外,如果最後一行被隱藏,那麼會將因此,使用該方法查詢最後一行是無規律且不可靠的,它通常可能會得到預料不到的結果。
"獲取最後一行
MsgBox "最後一行是第" & sheets(“工作表名稱”).usedrange.row.count & “行”