Errore di compilazione: espressione Costante richiesta

Ho incappato in un errore di compilazione, ma non ottenete che cosa può essere il problema. Quando si cerca di modificare il simbolo di una variabile di input ( TickerID ) ottengo l’errore, funziona perfettamente bene, altrimenti, quando l’inserimento e.g “yhoo” per la finanza ticker nome.

Codice

Private Sub CmdBtn_Add_Click()
'---------------------------------------------------------------------------------------'
' Checks that inputted ticker name is correct and calls import class after confirmation
'---------------------------------------------------------------------------------------'

' General Variables---------'
  Dim TickerID As String: TickerID = UCase(Add_Instrument.TxtBox_Instrument.Value)
'--------------------------'

    'Check if input field is not empty
    If TickerID = "" Or Application.WorksheetFunction.IsText(TickerID) = False Then
        MsgBox "Please provide a valid ticker ID"
        Exit Sub
    End If

    Debug.Print TickerID

    'Check Ticker name exists through YQLBuilder class
    Dim YQLBuilder As YQLBuilder: Set YQLBuilder = New YQLBuilder
    Call YQLBuilder.TickerCheck(TickerID)


'        Call ImportData(TickerID)

'        MsgBox "Please check the ticker name. It is in the wrong format"

End Sub
Public Sub TickerCheck(TickerID As String)
'---------------------------------------------------------------------------------------'
' Built 2014-11-05 Allows parsing of XML data through YAHOO API YQL
' 2014-12-21: Not fully built yet, see where it can be of use
'---------------------------------------------------------------------------------------'

' General Variables---------'
Const ConnStringStart As String = "http://query.yahooapis.com/v1/public/yql?q="
Const ConnStringLast As String = "&diagnostics=true&env=store://datatables.org/alltableswithkeys"
'---------------------------'


 Const ConnStringInput As String = "select * from yahoo.finance.stocks where symbol='" _
 & TickerID & "'" **<----- Error here!**

    Debug.Print ConnStringStart & ConnStringInput & ConnStringLast

    Dim YQLNodes As MSXML2.IXMLDOMNodeList
    Dim YQLReq As MSXML2.DOMDocument60

    Set YQLReq = New MSXML2.DOMDocument60

        YQLReq.async = False
        YQLReq.Load ConnStringStart & ConnStringInput & ConnStringLast

    YQLReq.setProperty "SelectionNamespaces", "xmlns:f='http://www.yahooapis.com/v1/base.rng'"
    Set YQLNodes = YQLReq.SelectNodes("//CompanyName")

    Dim xNode As MSXML2.IXMLDOMNode

    For Each xNode In YQLNodes

        Debug.Print xNode.Text

    Next xNode

     Debug.Print YQLNodes.Length

End Sub
InformationsquelleAutor uncool | 2014-12-21



One Reply
  1. 3

    Il messaggio è chiaro. Quando si dichiara una costante, il valore che si danno deve essere costante anche. In questo caso, una parte di esso è il parametro TickerId, che è variabile. Non è possibile dichiarare una costante con il valore di una variabile.

    Per risolvere questo problema, penso che si potrebbe utilizzare Dim invece di Const e non fare ConnStringInput una costante in tutti.

Lascia un commento