2016-06-07 36 views
2

這是一個問題,我一直在試圖找到一個答案几個月,但無濟於事!爲什麼代碼片段: -表達式與變量在Excel VBA

Sub sbDispCellAddress_01() 
ActiveCell.Address 
MsgBox ActiveCell.Address 
End Sub 

不起作用。
當我運行它時,出現編譯錯誤:Invalid use of property,'ActiveCell'後面的'Address'以藍色突出顯示。

然而,下面的代碼工作正常: -

Sub sbDispCellAddress_02() 
Dim s As String 
s=ActiveCell.Address 
MsgBox s 
End Sub 

那麼,爲什麼頂級代碼不行?
使底層代碼起作用的變量是什麼?
請幫我弄清楚這個簡單的例子。

+0

你會期望頂級代碼做什麼?評估一個地址但不對它做任何事情的線會是什麼? – Rory

+0

好點Rory。感謝您的迴應。 – ComfortablyNumb

回答

1

VBA語法本身就是一個法則。

ActiveCell.Address在語法上是無效的,除非它被「使用」的東西,諸如被分配給一個合適的類型的變量,或作爲函數參數(例如作爲參數MsgBox)。

在你的情況下,如果在Sub sbDispCellAddress_01()之後立即刪除行,問題就會消失。

在這方面VBA從如C,C++和Java,語言不同的地方表達後跟一個語句終止本身是一個語句,因此有效。

+0

謝謝,拔示巴。我必須記得讓我的腦袋遠離C,深入挖掘VBA語言。 – ComfortablyNumb

+0

經過反思,您的上面的解釋簡而言之,Bathsheba,我一直在尋找幾個月,無休止地拖網而沒有成功。在過去的幾個月中,僅僅採用了優秀的VBA,你的建議極大地增加了我對VBA語言的理解。非常感謝。 – ComfortablyNumb