2016-07-28 22 views
1

有時在開發時會發現典型屬性名稱以小寫形式顯示。VBA對象屬性以小寫形式出現

TempVars.Item("abc") 

可能會出現這樣的情況。

TempVars.item("abc") 

或者

tbxMyTextbox.Value 

顯示爲

tbxMyTextbox.value 

問題是爲什麼會發生這種情況,你如何解決這個問題?

回答

4

我已經多次問過自己這個問題,並看到其他人在SO和其他地方提出這個問題。在大多數情況下,在搜索其他編碼錯誤的答案時出現問題。有時候開發者(我也是)想知道是否有錯誤導致這種小寫問題。

前陣子我碰到一個答案跑(當我遇到它再次運行,我將添加原件備​​查)是最有意義和實際允許我糾正這個嘮叨問題。

顯然它發生在使用小寫變量的名稱與屬性相同時。

所以

Dim value as string 

將導致

myObject.Value 

表現爲

myObject.value 

解決方案?

因爲VBE顯然考慮整個IDE的這個變量 - 顯然不考慮範圍;恢復到正確的情況下的方法是暫時以大寫形式創建變量,並避免命名與您的應用程序中現有屬性同名的變量。

所以對於.value/.Value問題的解決上面會暫時包括你的應用程序中的模塊在該行

Dim Value as string 

。運行包含此行的代碼。

之後,刪除此臨時行代碼。

然後如所希望的,.value屬性將再次顯示爲.Value而不是.value

當然,我們應該首先避免使用這些詞,但如果在某些時候沒有完成上述操作,則應該解決問題。

這裏有一些保留字鏈接:

感謝@ScottCraner關於避免保留字的微調。

+2

真正的修復方法是找到變量並將名稱更改爲不是vba中保留名稱的名稱。因此,避免任何混淆關於哪個「價值」是指。 –

+0

@ScottCraner這絕對是真的,但有時人們會錯過這一點。我將把它添加到上面的解決方案中,並帶有保留字的鏈接。 – NWdev

+0

在某些情況下,您可以簡單地輸入所需的案例,例如: 'Dim Value as String',IDE將通過正確設置屬性的大小來響應 - 即使不運行代碼。 – NWdev

相關問題