Anzeige
Archiv - Navigation
1680to1684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: warten mit fortfahren bis Daten geladen sind

VBA: warten mit fortfahren bis Daten geladen sind
27.03.2019 09:57:52
Roman
Hallo zusammen
Ich habe das Problem, dass mein VBA-Code zu früh weiterläuft. In einem ersten Makro (Copy_ISIN) kopiere ich ein Identifier. Im zweiten Arbeitsschritt (Makro add_peers)werden alle zu diesem Identifier gehörenden weiteren Identifiers in einem Arbeitsblatt ergänzt. Dann werden noch Formeln für einen Datenbezug zu den Identifierts angereichert.
Mein Problem ist, dass mittels Formeln Daten aus einer externen Quelle bezogen werden (Schnittstelle zu Morningstar-Server) und das Laden dauert relativ und ist natürlich auch abhängig von der Anzahl der Identifiers. Es können 1 bis 2'000 Identifier je nach Abfrage aufgeführt werden. Mein Code läuft leider immer weiter bevor alle Daten geladen und verarbeitet worden sind.
Meine Frage nun: wie kann ich mein Excel mittels VBA-Code dazu bringen, dass mit der weiteren Verarbeitung gewartet wird bis alle Daten im Excel geladen und verarbeitet worden sind? Mein Code ist:
Sub Run_All()
Copy_SWC_ISIN 'Makro kopiert den Identifier
add_peers     'alle anderen Identifier werden kopiert. Daten-Load startet.
-> hier benötige ich die Unterbrechung bis alle Daten geladen und weiterverarbeitet  _
worden sind.
Remove_alle_NA_Makros 'Makro entfernt N/A's und Nuller
Chart_Achsenskalierung 'Makro passt die Achsenskalierung der Charts automatisch an
End Sub
Ich habe mit der Suchfunktion gesucht aber leider keine Lösung für mein Problem gefunden. Ich wäre sehr dankbar, wenn Ihr mir helfen könnt.
Beste Grüsse
Roman

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: warten mit fortfahren bis Daten geladen sind
27.03.2019 10:16:48
Rainer
Hallo Roman,
ist schwierig zu beantworten ohne den Code im Detail zu kennen.
Aber evtl. eine Behelfslösung: Erstelle eine globale Variable "ENDE_ADD_PEERS" und setze diese am Ende der Sub auf TRUE. Bei der gewünschten Unterbrechung kannst du nun eine Schleife einfügen, die diese Bedingung prüft.
Gruß,
Rainer
Falscher Code-Ausschnitt - Was macht "add_peers"?
27.03.2019 10:50:02
Zwenn
Hallo Roman,
wie sieht der Code von add_peers aus und was für Formeln sind das: 'mittels Formeln Daten aus einer externen Quelle bezogen werden (Schnittstelle zu Morningstar-Server)'
Ich denke add_peers darf die Kontrolle erst an Run_All zurück geben, wenn alles fertig ist, was add_peers machen soll. Nur, was ist das?
Viele Grüße,
Zwenn
Anzeige
AW: VBA: warten mit fortfahren bis Daten geladen sind
27.03.2019 15:35:17
Roman
Das "add_peers" holt anhand von einem Identifier (namentlich ISIN) von einem Universum von 358'592 die dazugehörigen Identifiers. Dann werden diese kopiert und die Formeln quasi per Autofill runtergezogen. Der Code ist:
Sub add_peers()
'Währung bestimmen als Vorarbeit für den Currency Converter
Range("C8:C8").Calculate
'von SWC-ISIN ausgehend die entsprechende Peer Group in der zweiten Lasche im Autofilter  _
anzeigen
Dim Kriterium1$, Kriterium2$
Kriterium1 = Sheets("Peer_Analysis").Cells(8, 1).Value
Sheets("PG_Details").Select
ActiveSheet.Range("$A$2:$G$358592").AutoFilter Field:=3, Criteria1:=Kriterium1
'alle Einzelpeers vom Autofilter markieren und copy
Sheets("PG_Details").Select
Range("E3").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWindow.SmallScroll Down:=3
Selection.Copy
Sheets("Peer_Analysis").Select
Range("A10").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Range("A10").Select
'Formel für alle Einzelpeers runterkopieren (quasi Autofill)
Range("B10:J10").Copy
Range("B11:J" & Cells(Rows.Count, 1).End(xlUp).Row).PasteSpecial xlPasteFormulas
Range("A10").Select
End Sub
Dann werden die Daten vom Morningstar Server geladen. Hier einige Beispiele der Formeln:
=MSDP($A8;"Std_Dev_3Yr_ME";"lmend";"ann=true") -> hier wird die Standardabweichung über 3 Jahre annualisiert geladen.
=MSTS($A8;"return";"lmend-3g";"lmend";"ann=true") -> hier wird die Performance über 3 Jahre annualisiert geladen.
MSDP steht für Morningstar Data Point.
MSTS steht für Morningstar Time Series.
$A8 ist der Identifier.
Mein VBA-Code soll erst weiterfahren, wenn die Daten von Morningstar geladen sind.
Wenn alles geladen und gerechnet ist, dann soll jetzt das VBA-Makro Remove_alle_NA_Makros (habe der Übersichtshalber nur den ersten Teil reinkopiert) fortfahren:
Sub Remove_NA()
' Remove_NA Makro Teil 1/3 (wegen Stack Overflow nötig Befehl zu splitten)
Dim rng As Range
For Each rng In Sheets("Peer_Analysis").Range("D10:R3000")
If rng.Value = "-N/A" Then rng.ClearContents
Next
End Sub

Anzeige
AW: VBA: warten mit fortfahren bis Daten geladen sind
27.03.2019 17:07:52
Zwenn
Hallo Roman,
ich kann es zwar nicht sicher sagen, nehme aber an, dass es mit den Formeln zusammenhängt. Da Formeln von Excel sehr wohl im Multithreading-Betrieb bearbeitet werden, kann ich mir vorstellen, dass "nebenbei" auch Makrocode weiter ausgeführt wird.
Ob das mit Formeln, die Daten von einem Server ziehen auch funktioniert kann ich nicht sagen. Aber schau Dir mal die folgende Seite zu CalculationState an:
http://docs.microsoft.com/de-de/office/vba/api/excel.application.calculationstate?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Dde-DE%26k%3Dk(vbaxl10.chm133265)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue
Damit solltest Du eine Schleife bauen können, die so lange läuft, bis der Status auf xlDone springt:
http://docs.microsoft.com/de-de/office/vba/api/excel.xlcalculationstate
Viele Grüße,
Zwenn
Anzeige
AW: VBA: warten mit fortfahren bis Daten geladen sind
01.04.2019 11:31:50
Roman
Hallo Zwenn
Vielen Dank für deine Hilfe. Als VBA-Anfänger ist mir das aber zu anspruchsvoll und so belasse ich alles beim Alten. Trotzdem vielen Dank.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen