2015-11-12 33 views
0

我使用的代碼當前的設定公用常數一個excel VBA模塊中:設置一個文件夾的位置作爲一個公衆不斷動態

Public Const QuoteDB = "N:\Data Warehouses\Databases\Quote DB.accdb" 

的文件夾位置是可能的機會,我希望能夠進入位置進入細胞定義爲範圍

像...

Public Const QuoteDB = Range("folderlocation") & "Quote DB.accdb" 

,當我使用此代碼我得到一個錯誤信息 - 任何想法如何解決這個問題?

+0

「我得到一個錯誤信息,當我使用此代碼 - 任何想法如何解決這個問題?「真的嗎?您認爲我們可以幫助您解決問題,而您實際上並未告訴我們錯誤消息是什麼? –

+1

你不能。您可以聲明您在代碼中預先設置的Public變量。您可以使用VBE編程在模塊中添加一行,但我不確定它會在與VBA編譯相同的運行時中考慮到......因此我認爲最好的方法仍然是使用公共變量 – R3uK

+0

roryap,我只是問這個問題的樂趣。當然,我很認真 - 其他回答很有幫助 - 你的不是! –

回答

1

Const -Keyword和Dynamic相互矛盾。您不能將動態值分配給Const變量,因爲這必須在運行時發生,並且這是Const不能更改的地方。

不幸的是,Public QuoteDB = ...也不起作用。

我建議你聲明你的變量爲Public QuoteDB as String,並youself寫在您將所有的值,例如SubFunctioninit()

Sub main() 
    call setDirectory() 
    ' Variables should be set now 

    ' Other stuff: 
    call restOfYourCode() 
end Sub 
+0

感謝Verzweifler,我嘗試將QuoteDB設置爲公共字符串,並創建了一個在打開工作簿時自動運行的子例程。因此,在「ThisWorkbook」對象下,我輸入以下代碼:Sub setdirectory() QuoteDB = Range(「DataBaseLink」)&「Quote DB.accdb」 RawdataDB = Range(「DataBaseLink」)&「Rawdata DB.accdb 「 End Sub但是,它似乎沒有將其設置爲公共字符串。 –

+0

當我在使用RawDataDb和QuoteDB的工作簿中運行其他宏時,當我以中斷模式調查它時,它們是空白的。 –

+0

您必須在其他代碼中調用'setDirectory()',否則變量將被重置!詳情請參閱我編輯的答案。 – Verzweifler

相關問題