有時在開發時會發現典型屬性名稱以小寫形式顯示。VBA對象屬性以小寫形式出現
TempVars.Item("abc")
可能會出現這樣的情況。
TempVars.item("abc")
或者
tbxMyTextbox.Value
顯示爲
tbxMyTextbox.value
問題是爲什麼會發生這種情況,你如何解決這個問題?
有時在開發時會發現典型屬性名稱以小寫形式顯示。VBA對象屬性以小寫形式出現
TempVars.Item("abc")
可能會出現這樣的情況。
TempVars.item("abc")
或者
tbxMyTextbox.Value
顯示爲
tbxMyTextbox.value
問題是爲什麼會發生這種情況,你如何解決這個問題?
我已經多次問過自己這個問題,並看到其他人在SO和其他地方提出這個問題。在大多數情況下,在搜索其他編碼錯誤的答案時出現問題。有時候開發者(我也是)想知道是否有錯誤導致這種小寫問題。
前陣子我碰到一個答案跑(當我遇到它再次運行,我將添加原件備查)是最有意義和實際允許我糾正這個嘮叨問題。
顯然它發生在使用小寫變量的名稱與屬性相同時。
所以
Dim value as string
將導致
myObject.Value
表現爲
myObject.value
解決方案?
因爲VBE顯然考慮整個IDE的這個變量 - 顯然不考慮範圍;恢復到正確的情況下的方法是暫時以大寫形式創建變量,並避免命名與您的應用程序中現有屬性同名的變量。
所以對於.value
/.Value
問題的解決上面會暫時包括你的應用程序中的模塊在該行
Dim Value as string
。運行包含此行的代碼。
之後,刪除此臨時行代碼。
然後如所希望的,.value
屬性將再次顯示爲.Value
而不是.value
。
當然,我們應該首先避免使用這些詞,但如果在某些時候沒有完成上述操作,則應該解決問題。
這裏有一些保留字鏈接:
感謝@ScottCraner關於避免保留字的微調。
真正的修復方法是找到變量並將名稱更改爲不是vba中保留名稱的名稱。因此,避免任何混淆關於哪個「價值」是指。 –
@ScottCraner這絕對是真的,但有時人們會錯過這一點。我將把它添加到上面的解決方案中,並帶有保留字的鏈接。 – NWdev
在某些情況下,您可以簡單地輸入所需的案例,例如: 'Dim Value as String',IDE將通過正確設置屬性的大小來響應 - 即使不運行代碼。 – NWdev