2017-04-16 24 views
0

我試圖創建一個基於我放入單元格「A1」中的內容而改變的URL,但是,我不斷收到編譯錯誤「需要的常量表達式」。需要不斷的表達式 - vba

錯誤出現在「banana」的第二行。

banana = Range("A1") 

Const URL As String = "http://openinsider.com/screener?s=" & banana & "&o=&pl=&ph=&ll=&lh=&fd=730&fdr=&td=0&tdr=&fdlyl=&fdlyh=&daysago=&xp=1&xs=1&vl=&vh=&ocl=&och=&sic1=-1&sicl=100&sich=9999&grp=0&nfl=&nfh=&nil=&nih=&nol=&noh=&v2l=&v2h=&oc2l=&oc2h=&sortcol=0&cnt=100&page=1" 
Const READYSTATE_COMPLETE As Integer = 4 

回答

2

VBA需要一個Const URL,但你實際上是試圖使用它作爲一個動態變量String,不Const

如果你希望你的URL根據在Range("A1")值是動態的,使用下面的代碼:因爲當你聲明一個常數

Dim banana As String 
Dim URL As String 

banana = Range("A1").Value 
URL = "http://openinsider.com/screener?s=" & banana & "&o=&pl=&ph=&ll=&lh=&fd=730&fdr=&td=0&tdr=&fdlyl=&fdlyh=&daysago=&xp=1&xs=1&vl=&vh=&ocl=&och=&sic1=-1&sicl=100&sich=9999&grp=0&nfl=&nfh=&nil=&nih=&nol=&noh=&v2l=&v2h=&oc2l=&oc2h=&sortcol=0&cnt=100&page=1" 
-1

其實你得到的錯誤,你給的值,它必須是恆太。你不能用變量聲明一個常量。

所以聲明這樣,

昏暗香蕉作爲字符串 昏暗URL作爲字符串

香蕉=片材(1).Range( 「A1」)。值

二者必選其一。如果在這裏或選擇案例,因爲URL將按照在A1值的變化而改變,

URL =「https://as.com

然後其他的代碼。

+0

僅僅因爲變量的值可能發生變化,不需要'If'或'Select Case'。這就是爲什麼編程語言有變量 - 以便它們可以在代碼中使用,並且代碼將使用變量的當前值。 – YowE3K

+0

請檢查原始問題,如果A1中的值將會被修改,那麼人們已經寫入的URL將會發生變化,並且這隻能通過邏輯地測試A1來執行。 –

+0

不,您可以編寫一個聲明,例如'URL =「http://openinsider.com/screener?s=」&banana&「&o =&pl =&page = 1」',它會將URL設置爲字符串'「http://openinsider.com/screener?s=」'與變量'banana'的當前值連接在字符串'「&o =&pl =&page = 1」'上。當計算一個常量的值時,你顯然不能包含一個變量,但是,如果提供'URL'是一個變量而不是一個常數,則可以使用一個變量計算'URL'。請參閱[由@ShaiRado提供的答案](http://stackoverflow.com/a/43439970/6535336)瞭解正確的方法。 – YowE3K