VBA取得最後一欄欄數
當我們使用VBA迴圈時,常會以第一欄執行至最後一欄,那要怎麼使用VBA取得使用儲存格中最後一欄的欄數呢?以下列出幾種主要的方法。
方法一 移到右方取欄數
※輸入以下指令※
Sub 取得最後一欄()
欄 = Range(“A1”).End(xlToRight).Column
MsgBox 欄
End Sub
點選「開發人員」-「巨集」或按下「Ctrl」+「F8」快捷鍵,並「執行」巨集。
執行後則從「A1儲存格」移動到使用儲存格最右方所在的欄數,則為最後一欄的欄數(6)。
但此方法的缺點是當中間夾帶空白儲存格時,則會計算到空白儲存格之前的欄數(4)。
方法二 移到左方取欄數
※輸入以下指令※
Sub 取得最後一欄()
欄 = Range(“IV1”).End(xlToLeft).Column
MsgBox 欄
End Sub
執行後則從「IV1儲存格」移動到左方有資料所在的欄數,則為最後一欄的欄數(6)。
※為什麼是IV1儲存格呢?因版本2007以前最多僅到256欄,但目前已到16384欄,所以也可以改成XFD1儲存格,但通常不會用到這麼多欄。
而此方法若中間夾帶空白儲存格時,仍然會計算到最右方有資料之欄數(6)。
方法三 取最大欄數移左方
※輸入以下指令※
Sub 取得最後一欄()
欄 = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox 欄
End Sub
與方法二差異在方法三是計算出最大欄數後,再移動到左方有資料所在的欄數,則為最後一欄的欄數(6)。
方法四 計算區域儲存格的欄數
※輸入以下指令※
Sub 取得最後一欄()
欄 = Range(“A1”).CurrentRegion.Columns.Count
MsgBox 欄
End Sub
執行後則從計算目前區域儲存格總共的欄數,總欄數(6)。
方法五 列數加一直到空白列
※輸入以下指令※
Sub 取得最後一欄()
欄 = 1
Do While Cells(1, 欄) <> “”
欄 = 欄 + 1
Loop
MsgBox 欄 – 1
End Sub
執行後則當資料非空值時將欄數+1,直到最後一欄時會再+1,需要再-1則為最後一欄(6)。