您面臨的問題可能是由於 VBA 處理範圍的方式和 Cells 屬性的行為所造成的。
當您設定 rgn = Range("A1:B4") 時,您將建立一個代表從 A1 到 B4 的儲存格的範圍物件。但是,範圍物件的 Cells 屬性並不限於指定的範圍。相反,它代表工作表中的所有儲存格,您可以使用 Cells 屬性存取定義範圍之外的儲存格。
在您的情況下,當您使用rgn.Cells(1, 3) 時,您正在存取第一行第三列中的單元格,即單元格C1,即使它超出了您定義的範圍(A1:B4 )。這就是為什麼您能夠在訊息框中顯示值“na”。
為了確保您只存取定義範圍內的儲存格,可以使用下列方法:
Sub text()
Dim rgn As Range
Set rgn = Range("A1:B4")
MsgBox rgn.Cells(1, 2).Value ' This will display the value in cell B1
End Sub
在這段修改後的程式碼中,我們使用 rgn.Cells(1, 2) 來存取第一行第二列中的儲存格,該儲存格位於 A1:B4 定義的範圍內。
或者,您可以使用 Offset 屬性來存取定義範圍內的儲存格:
Sub text()
Dim rgn As Range
Set rgn = Range("A1:B4")
MsgBox rgn.Offset(0, 2).Value ' This will display the value in cell C1
End Sub
在本例中,我們使用 rgn.Offset(0, 2) 存取範圍內左上角儲存格(即儲存格 C1)向下 0 行、右側 2 列的儲存格。
關鍵要點是,在 VBA 中使用範圍時,您需要注意 Cells 屬性的行為,並確保存取定義範圍內的儲存格,以避免意外結果。 |