2017-04-19 171 views
1

問題:是否有可能在VBA中隱藏了某些變量的聲明?隱藏變量聲明VBA

現狀:

我有一個Excel文件,有很多的模塊,但每當我們打開它的一些原因,該消息顯示了,我嘗試在一些論壇上,但沒有成功找到了一些「解決方案」 - >我決定一張一張地複製一張紙和一張模塊,將所有東西都複製到一張新的「乾淨的」excel文件中。

問題:代碼不運行,說變量XXX沒有聲明(好的...有道理),但我檢查了損壞的文件,即使它沒有在任何地方聲明(我檢查與Finder在整個項目中)有問題的代碼可以運行...令人困惑!

對此有何解釋?

+4

如果一個變量沒有被聲明但是被使用,那麼它被創建的時間很晚,如果選項顯式不存在,那麼它是被接受的使用(雖然不是最佳實踐)。舊的工作簿可能沒有明確的選項,而新的工作簿可以。 – Zerk

+0

@ Zerk:是的。我完全模糊了這個細節。你是對的 !我只是檢查了謝謝 – Seb

回答

1

最壞的情況下,快速和骯髒的情況 - 從每個模塊,類,工作簿和工作表中刪除Option Explicit。它確保所有變量都被聲明。例如,嘗試運行以下代碼:

Option Explicit 

Sub TestMe() 
    k = 5 
    Debug.Print k 

End Sub 

您不能。然後在Sub TestMe()之後添加dim k as long。或者刪除Option Explicit。現在你可以運行它。

緩慢而乾淨的解決方案:檢查所有變量,當您嘗試運行代碼並聲明它們時突出顯示。你的代碼運行得更快。

+0

緩慢而乾淨的解決方案是解決方案...您的答案是錯誤的方法? – whytheq

+0

好吧,如果你有50,000行代碼並在30分鐘內完成最後期限,你可能冒一點風險。 @whytheq – Vityata

+0

是的,它只是更好地添加它。它可以防止拼寫錯誤被忽視。我前一段時間已經設置了_Require變量Declaration_選項,但這不是我完成的原因。 – Seb