Die VBA-Prozedur gibt eine unterschiedliche Anzahl von Zeichenfolgenvariablen aus, die deklariert und wiederverwendet werden sollen

Hier haben wir ein Verfahren geliefertCodo durchHerr Tim Williams die druckt auf demImmediate window etwas, das wir wirklich wollen. Ich habe einige kleine Änderungen an der vorgenommenOriginalkopie und ich habe das KommentarwortMODIFICATION neben ihnen

Sub MAGAZINE()

    Dim IE As InternetExplorer ' MODIFICATION
    Dim els, el, colDocLinks As New Collection
    Dim lnk
    Dim Ticker As String ' MODIFICATION

    Set IE = New InternetExplorer 'MODIFICATION

    IE.Visible = True

    Ticker = Worksheets("Sheet1").Range("A1").Value 'MODIFICATION

    loadpage IE, "https://www.sec.gov/cgi-bin/browse-edgar?" & _
                  "action=getcompany&CIK=" & Ticker & "&type=10-Q" & _   'MODIFICATION by putting the Ticker String Variable and then Concatenate accordingly
                  "&dateb=&owner=exclude&count=20"                       

    Set els = IE.Document.getelementsbytagname("a")
    For Each el In els
        If Trim(el.innertext) = "Documents" Then
            colDocLinks.Add el.href
        End If
    Next el

    For Each lnk In colDocLinks
        loadpage IE, CStr(lnk)
        For Each el In IE.Document.getelementsbytagname("a")
            If el.href Like "*[0-9].xml" Then                'MODIFICATION
                Debug.Print el.innertext, el.href
            End If
        Next el
    Next lnk

End Sub

Sub loadpage(IE As Object, url As String)
    IE.Navigate url
    Do While IE.Busy Or IE.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
End Sub

Sie können in der vierten Änderung / Ergänzung feststellen, dass eine Person einfach den Börsenticker in Zelle A1 eingeben und den Code abfeuern kann

Ticker = Worksheets("Sheet1").Range("A1").Value 'MODIFICATION

Jetzt ist die Sache, dass, wenn wir verschiedene Börsenticker setzen, wir unterschiedlich bekommenAnzahl der im Direktfenster gedruckten Zeilen.

Wenn Sie beispielsweise in Zelle A1 den Ticker CRR eingeben, erhalten Sie 11 Ergebnisse

Wenn wir nun in Zelle A1 den Ticker MSFT eingeben, erhalten wir 14 Ergebnisse

Der springende Punkt des Problems ist nun, dass diese Zeichenfolgenwerte in die eingefügt werden müssenRIFLE macro und obwohl ich die Werte, die ich von jeder Schleifeniteration in den Zeichenkette-Variablen erhalten könnte, beurteilen könnte, ist, dass das ein Affenschlüssel in meinem Verstand wirftMAGAZINE macro wie es logisch isthat keine exakte Anzahl von Zeilen, die in dem unmittelbaren Fenster gedruckt werden. Das sieht man eigentlich auf den beiden vorhergehenden Bildern ...

Wie ist es also möglich, wennMAGAZINE macro hat ein Ergebnis von etwa 6 Zeilen; Diese Variablen müssen 6 Zeichenfolgenvariablen zugewiesen werden und haben keine 30 Zeichenfolgenvariablen, die immer als verheerend eingestuft werden und wenn das Ergebnis 14 Zeilen ist. Diese können 14 String-Variablen zugewiesen werden.

Wie kann dies zur Laufzeit eingestellt werden, damit das Gewehr immer mit der richtigen Anzahl von Runden geladen wird?

Weil ich dort nicht aufhören werde; dann habe ich vor, diese String-Variablen in die zu steckenRIFLE macro zur Verfügung gestellt vonuser2140261 und unten gezeigt ...

Sub RIFLE()
Dim strXMLSite As String
Dim objXMLHTTP As MSXML2.XMLHTTP
Dim objXMLDoc As MSXML2.DOMDocument
Dim objXMLNodexbrl As MSXML2.IXMLDOMNode
Dim objXMLNodeDIIRSP As MSXML2.IXMLDOMNode

Set objXMLHTTP = New MSXML2.XMLHTTP
Set objXMLDoc = New MSXML2.DOMDocument

strXMLSite = "http://www.sec.gov/Archives/edgar/data/10795/000119312513456802/bdx-20130930.xml"

objXMLHTTP.Open "POST", strXMLSite, False
objXMLHTTP.send
objXMLDoc.LoadXML (objXMLHTTP.responseText)

Set objXMLNodexbrl = objXMLDoc.SelectSingleNode("xbrl")

Set objXMLNodeDIIRSP = objXMLNodexbrl.SelectSingleNode("us-gaap:DebtInstrumentInterestRateStatedPercentage")

Worksheets("Sheet1").Range("A1").Value = objXMLNodeDIIRSP.Text
End Sub

Wenn Sie diese schwankende Anzahl von Zeichenfolgenwerten, die aus dem MAGAZIN-Makro kommen, in Zeichenfolgenvariablen im RIFLE-Makro einfügen könnten, würde dies das gesamte Problem lösen.

Das RIFLE-Makro hier hat von seiner ursprünglichen Form diestrXMLSite String Variabe.

UPDATE Ich versuche gerade, es in ein Array zu laden und dann zu entladen ...

Antworten auf die Frage(1)

Ihre Antwort auf die Frage