Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Datenübergabe Userform

Datenübergabe Userform
14.05.2004 19:48:06
Carolin
Hallo,
ich habe folgendes Problem: Über ein Macro wird eine Userform aufgerufen, welche zahlreiche Daten (teilweise nach Berechnungen) in ein Tabellenblatt zurückliefert. Auf Basis dieser zurückgelieferten Daten sollen weitere Berechnungen durchgeführt werden. Diese Prozeduren rufe ich über obiges Macro auf. Nun werden aber die Prozeduren schon ausgeführt, wenn die über die Userform abgefragten Daten noch nicht vollständig an das Tabellenblatt übergeben worden sind. Wie kann ich diese vollständige Übergabe abfragen/abwarten, um erst dann die nachfolgenden Prozeduren auszulösen?
Vielen Dank!
Carolin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datenübergabe Userform
14.05.2004 20:04:56
Oberschlumpf
Hi Carolin
Füge doch dem Formular einen Button hinzu, mit Namen z Bsp "Berechnung".
Und erst, wenn alle Eingaben vom User gemacht wurden, und er auf diesen Button klickt, erst dann werden alle Berechnungen und/oder Wertübergaben an das Tabellenblatt durchgeführt.
Konnte ich helfen?
Ciao
Thorsten
AW: Datenübergabe Userform
Carolin
Hallo Thorsten,
diese Möglichkeit habe ich auch schon in Betracht gezogen, wollte ich aber gerne vermeiden... Ich hoffe, dass es auch noch eine andere Möglichkeit gibt?
Dennoch vielen Dank für Deinen Tipp!!
VG Carolin
AW: Datenübergabe Userform
Boris
Hi Carolin,
...wie soll es denn nach deiner Idealvorstellung ablaufen?
Grüße Boris
Anzeige
AW: Datenübergabe Userform
14.05.2004 22:38:56
Oberschlumpf
Hi Carolin
Nächster Versuch.
Angenommen, Dein Formular enthält 3 Eingabefelder, die erst ausgefüllt sein müssen, bevor Berechnungen und/oder Wertübergabe erfolgen.
Dann versuch es so:

Private Sub TextBox1_AfterUpdate()
If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then Beep
End Sub


Private Sub TextBox2_AfterUpdate()
If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then Beep
End Sub


Private Sub TextBox3_AfterUpdate()
If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then Beep
End Sub

So wird jedesmal, nach Eingabe eines Wertes und Verlassen des Textfeldes, bzw. Betätigen der Eingabetaste das AfterUpdate-Ereignis ausgelöst, und es wird geprüft, ob alle Textfelder Werte enthalten.
Du kannst noch die Bedingung einbauen, dass das Makro nur bei Eingabe numerischer Werte ausgelöst werden soll.
Ach ja, hier ist das Makro der Befehl "Beep". Musst Du natürlich ersetzen :-)
Hilft Dir denn diese Idee weiter?
Ich schließe mich übrigens der Frage von Boris und dem damit verbundenen Himweis an:
Eine qualifitierte Antwort erfordert eine qualifizierte Fragestellung.
Bedeutet, immer GENAU angeben, was man möchte und nicht allgemeine Formulierungen verwenden.
"Ich hab da so n paar Textboxen, die sollen n paar Werte aufnehmen" Du verstehst? ;-)
Ciao
Thorsten
Anzeige
AW: Datenübergabe Userform
Carolin
Hi!
Vielen Dank erstmal für Eure Mühe, obwohl ich mich anscheinend mäßig genau ausgedrückt habe- Sorry!!

Sub Macro1()
Userform1.show 	'hier werden Daten erfragt und auf Tabellenblatt übergeben
Range("A1").Select
MV_berechnen	'die über die Userform1 erfragten Daten bilden die Basis für weitere
Gauss_anwenden	'Berechnungen durch MV_berechnen/Gauss_anwenden
End Sub

Es passiert folgendes:
Das Macro1 wird über einen Button aufgerufen. Userform wird angezeigt, Daten werden eingegeben bzw. ausgewählt und auf das Tabellenblatt geschrieben (über CommandButton_Click in Userform). Bis dahin klappt alles super. Aber: Noch bevor alle Daten auf dem Tabellenblatt stehen wird 'MV_berechnen' etc. ausgeführt, was zu einer fehlerhaften Berechnung führt (Zirkelbezug). Lasse ich die Prozeduren noch in der Userform aufrufen, passiert das Gleiche. Wird das Macro1 ohne die Prozeduren gestartet und anschließend die Prozeduren händisch ausgelöst, funktioniert alles einwandfrei.
(Leider kann ich die Information einer 'vollständige Abarbeitung' der Userform nicht über z.B. den Wert einer Textbox, oder irgendeiner bestimmten Zelle auf dem Blatt abfragen.)
Ich hoffe es ist diesmal besser verständlich?
Gruß Carolin
Anzeige
AW: Datenübergabe Userform
15.05.2004 08:48:19
Oberschlumpf
Hallo Carolin
Vielen Dank für die nun echt sehr gute Fragestellung (zumindest glaube ich, Dich nun richtig verstanden zu haben...wenn die folgenden Erklärungen und Lösungsvorschläge noch immer falsch sind, dann liegt es bestimmt nicht mehr an Dir ;-) )
Also...
Warum trotz all Deiner Bemühungen und unserer Vorschläge Dein Prob noch immer nicht zu lösen ist, liegt, glaube ich, an dem Aufbau Deines VBA-Codes.
Dieser Code

Sub Macro1()
Userform1.show 'hier werden Daten erfragt und auf Tabellenblatt übergeben
Range("A1").Select
MV_berechnen 'die über die Userform1 erfragten Daten bilden die Basis für weitere
Gauss_anwenden 'Berechnungen durch MV_berechnen/Gauss_anwenden
End Sub

bewirkt, dass zuerst die Userform aufgerufen wird, und egal, was in dieser Form passiert, der weitere Code wird sofort nach dem Aufruf der Form ausgeführt.
Besser wäre vielleicht diese VBA-Variante:
Starte in Macro1 NUR das Formular

Sub Macro1()
Userform1.show 'hier werden Daten erfragt und auf Tabellenblatt übergeben
End Sub

Und füge zu dem Klick-Ereignis des Buttons, welches die Wertübertragung auslöst, die Makroaufrufe Deiner 2 anderen Makros hinzu:

Private Sub CommandButton1_Click()
'hier zuerst alle Werte in das Tabellenblatt übertragen und dann...
MV_berechnen	'die über die Userform1 erfragten Daten bilden die Basis für weitere
Gauss_anwenden	'Berechnungen durch MV_berechnen/Gauss_anwenden
End Sub

Diese Vorgehensweise bewirkt, dass nun tatsächlich ZUERST die Werte in die Tabelle übertragen werden, und ERST dann werden die Berechnungsmakros ausgeführt.
Ich hoffe, dass ich Dich nun richtig verstanden habe, und Deine nächste Meldung eine Erfolgsmeldung sein wird :-)
Ciao
Thorsten
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige