Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
788to792
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
788to792
788to792
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Brauche Hilfe bei Makro

Brauche Hilfe bei Makro
03.08.2006 08:34:28
Daniel
Hallo Zusammen,
ich habe versucht mir selbst ein Makro zu erstellen. Leider funktioniert es aber nicht wie von mir gewünscht.
Es geht um ein Sheet, in dem ich mir aus einer DDE-Verknüpfung Daten ziehe.
Anschließend will ich diese in txt Dateien kopieren.
In Spalte N stehen verschiedene Kürzel, die der DDE-Formel sagen, was genau für Daten gezogen werden sollen.
Nun wäre das manuelle sehr mühsam die Ganze Liste einzeln per Dropdown durchzuklicken. Es dauert immer einen Moment bis die neuen Daten empfangen werden. Während dieser Zeit steht in A2 "Retrieving...".
Nun wollte ich ein Makro haben, das Schritt für schritt die Liste der Kürzel durchgeht und die Daten lädt. Hier muss aber immer gewartet werden, bis die Daten geladen waren und der txt Export stattgefunden hat.
Leider funzt das im Moment nicht. Es wechselt immer zwichen 1. und 2. symbol hin und her. Wo ist mein Fehler. Ich kenne mich leider nicht so gut aus in VBA.
Gruß,
Daniel

Sub Symbolchange()
Dim i As Long
For i = Cells(1, 12).Value To Cells(3, 13).Value
If Cells(2, 1).Value <> "Retrieving..." Then
Cells(3, 1).Value = Cells(i, 14).Value
End If
'Call TextExport Hier würde dann der Export eingebaut werden
Next i
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Brauche Hilfe bei Makro
03.08.2006 09:17:29
Matthias G
Hallo Daniel,
Die Schleife verstehe ich nicht, innerhalb dieser steht ja i kein einziges Mal, d.h. es wird nichts verändert...?
So kannst du darauf warten, bis in A2 nicht mehr "Retrieving" steht (ungetestet, da ich keine DDE-Verbindung herstellen kann):

Do While Cells(2, 1) <> "Retrieving..."
DoEvents
Loop

Gruß Matthias
AW: Brauche Hilfe bei Makro
03.08.2006 09:24:10
Daniel
Hallo Matthias,
danke für den Tipp. das mit dem Do While versuche ich mal.
Doch, in Zeile 5 ist das i versteckt. Das ist die Spaalte mit den Kürzeln.
i richtet sich nach zwei Zellen, 1/12 und 3/13.
Gruß,
daniel
Anzeige
AW: Brauche Hilfe bei Makro
03.08.2006 10:00:02
Daniel
Halo Matthias,
du meinst das so wie untenstehender Code?
Da ändert sich leider nur das 1. Kürzel. Dann passiert nichts weiter. :-(

Sub Symbolchange()
Dim i As Long
For i = Cells(1, 12).Value To Cells(3, 13).Value
Do While Cells(2, 1) <> "Retrieving..."
DoEvents
Loop
Cells(3, 1).Value = Cells(i, 14).Value
'Call TextExport Hier würde dann der Export eingebaut werden
Next i
End Sub

AW: Brauche Hilfe bei Makro
03.08.2006 13:15:52
Matthias G
Hallo Daniel,
ich weiß nicht wie schnell die Zelle A2 reagiert. Vielleicht prüft er die Zelle bereits, wenn in A2 nocht gar nicht "Retrieving" gestanden hat. Dann wird das gleich übersprungen...
Schleifenbeginn:

  • Zelle A3 ändern
  • erstmal warten, bis A2 "Retrieving" anzeigt (ist vielleicht nötig, wenn A2 zu langsam reagiert
  • dann warten, bis A2 nicht mehr "Retrieving" anzeigt
  • Daten auslesen

Schleifenende
Gruß Matthias
Anzeige
AW: Brauche Hilfe bei Makro
03.08.2006 13:16:51
Henry
Hallo Daniel,
das Problem ist die Systematik: Du fragst in der For-Schleife ab, ob in Zelle A2 der Wert "Retrieving..." steht. Falls nicht, soll das Makro den nächsten Wert aus Spalte N in die Zelle A3 packen. Das Problem ist jetzt aber, dass sobald der erste Wert geladen wird, ja "Retrieving..." in Zelle A2 steht. Das Makro läuft dann aber gnadenlos weiter und scheitert für alle folgenden i (also Werte für i) an der IF-Abfrage und führt dann nur den Call aus. Du müsstest also schon noch versuchen, entweder über einen Loop zu arbeiten oder eine Wartezeit mit zu berücksichtigen.
Ich würde mal folgenden Aufbau testen:

Sub Symbolchange()
Dim lngCount as Long,l ngStart As Long, lngStop as Long
lngStart = Cells(1, 12).Value
lngStop = Cells(3, 13).Value
Do until lngCount > lngStop
If Cells(2, 1).Value <> "Retrieving..." Then
Cells(3, 1).Value = Cells(lngCount, 14).Value
lngCount = lngCount + 1
'Call TextExport Hier würde dann der Export eingebaut werden
End If
Loop
End Sub

Ich selbst konnte es jetzt aus Zeitgründen nicht probieren, kann also keine Gewähr übernehmen. Sollte er mit einem Fehler in der Schleife festhängen, also quasi eine Endlosschleife produzieren, versuche diese mit der ESC-Taste abzubrechen. Zu Testzwecken würde ich für lngStart und lngStop nicht zu hohe Werte nehmen.
Ich hoffe, es hilft Dir weiter.
Viele Grüße
Henry
Anzeige
AW: Brauche Hilfe bei Makro
03.08.2006 14:15:35
Daniel
Hallo Henry,
danke für das Makro.
Leider kommt hier Anwendungs- oder objektdefinierter fehler:
Cells(3, 1).Value = Cells(lngCount, 14).Value
Was muss ich ändern?
Gruß,
Daniel
AW: Brauche Hilfe bei Makro
03.08.2006 14:37:00
Henry K.
Hallo nochmal.
Ich hatte noch vergessen lngCount einen Wert zuzuweisen.
Teste mal den Code hier:
Sub Symbolchange()
Dim lngCount as Long, lngStop as Long
lngCount = Cells(1, 12).Value
lngStop = Cells(3, 13).Value
Do until lngCount > lngStop
If Cells(2, 1).Value <> "Retrieving..." Then
Cells(3, 1).Value = Cells(lngCount, 14).Value
lngCount = lngCount + 1
'Call TextExport Hier würde dann der Export eingebaut werden
End If
Loop
Falls das auch nicht funktioniert, könntest Du vielleicht mal Deine Datei (auszugsweise) hochladen? Dann kann man da konkreter einsteigen.
Grüße
Henry
Anzeige
AW: Brauche Hilfe bei Makro
03.08.2006 15:27:19
Daniel
Hallo Henry,
jetzt tut sich schonmal was. das Problem ist jetzt, dass das DDE Update stehen bleibt. Es bleibt immer "Retrieving...". Bis ich dann ESC drücke. Dann markiert er im Debugging das End If. sobald ich das beende, zieht er die Kurse. Man müsste also einen Stopp einbauen, der es der DDE ermöglicht das Update zu machen.
Kann man z.B. - wie matthias G schreibt- das Script an der Stelle stoppen und wieder anwerfen????
Gruß,
Daniel
AW: Brauche Hilfe bei Makro
03.08.2006 15:47:17
Matthias G
Hallo Daniel,
baue mal ein "DoEvents" in die Schleife ein (vor der If-Abfrage), damit Excel für seine anderen Aufgaben noch Zeit hat.
Gruß Matthias
Anzeige
AW: Brauche Hilfe bei Makro
03.08.2006 15:51:11
Daniel
Hallo,
das bringt leider auch nichts. Schade. Vielleicht geht es gar nicht.
Gruß,
Daniel
AW: Brauche Hilfe bei Makro
03.08.2006 16:12:25
Henry K.
Hmm, ich hätte jetzt auch mal auf das DoEvents getippt.
Es gibt noch die Möglichkeit, eine Wartezeit einzubauen. Die unterbricht aber normalerweise alle Excel-Aktivitäten mit Ausnahme der Hintergrundprozesse. Jetzt bin ich kein DDE-Experte und weiß nicht, ob der als Hintergrundprozess gilt.
Du könntest aber versuchen hinter das End If folgende Zeile einzubauen und anzupassen:
Application.Wait(Now + TimeValue("0:00:01"))
Dieser Code lässt die Anwendung eine Sekunde warten. Wenn Du erfahrungsgemäß weißt, dass die DDE-Übertragung länger dauert, kannst Du die Zeit ja entsprechend anpassen.
Sollte das auch nicht gehen, müsste man wahrscheinlich die DDE-Prozesse direkt abfragen und nicht so von hinten durch die Brust ins Auge über den Zellwert. Wie das geht, weiß ich allerdings nicht. Vielleicht kann da ja jemand anderes helfen. Gegebenenfalls solltest Du das Problem dann noch mal mit einem konkreteren Titel posten. Zum Beispiel "Problem mit Makro zur Stapelverarbeitung von DDE-Prozessen" oder so ähnlich.
Grüße
Henry
Anzeige
AW: Brauche Hilfe bei Makro
04.08.2006 09:20:36
Daniel
Hallo Henry,
jetzt bleibt er bei dem Loop stehen.
Dann wird mir wohl nichts anderes übrig bleiben, als den Supprt der DDE einzuschalten.
Danke für die Hilfe,
Daniel
AW: Brauche Hilfe bei Makro
04.08.2006 16:57:36
Jan
Hi,
überprüf mal, ob DDE das Calculate-Ereignis auslöst, indem du in eine Zelle
=ZUFALLSZAHL() schreibst und beobachtest, ob sich diese Zelle beim Import ändert.
mfg Jan
AW: Brauche Hilfe bei Makro
04.08.2006 17:21:19
Daniel
Hallo Jan,
ja, die Zahl ändert sich.
Und zwar zu Beginn des Datenladens und zum Ende.
Wobei ich das Ende ja nur durch Abrruch des codes herbeiführen kann.
Gruß,
Daniel
AW: Brauche Hilfe bei Makro
05.08.2006 21:14:41
schauan
Hallöchen,
ich hab jetzt nicht alles gelesen, aber warum packt Ihr das nicht in ein Change - Ereignis das ausgeführt wird wenn sich A2 ändert. Oder am besten gleich im Anschluss an den code der die Tabelle füllt.
Hoffe geholfen zu haben
Grüße von André aus Gera - Excel-97-2003

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige