Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
460to464
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
460to464
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Mehrere Makros aufrufen über cmb_Button
26.07.2004 11:23:47
Torsten
Hallo zusammen,
in einer Datei habe ich ein WS ("Daten"), in dem Daten stehen, die in anderen WS ausgewertet werden. Da sich die Daten
regelmäßig ändern, habe in jedes dieser WS einen cmb_Button
(z.B.

Private Sub cmb_NL1_Click()),
über den ich die Daten aus dem WS ("Daten") aktualsieren kann. Nun möchte ich aber in der Lage sein,
aus einem Übersichtsblatt heraus alle WS zu aktualisieren.
Mein Ansatz:

Private Sub cmb_UpDateALL_Click()
Application.ScreenUpdating = False
If InputBox("Bitte Password angeben") = "maze" Then
Call Sub "cmb_NL1_Click"
On Error GoTo Errorhandler
Call Sub "cmb_NL2_Click"
usw......
Errorhandler
MsgBox ("Ein Fehler ist aufgetreten. Dateien wurden nicht aktualisiert")
Exit Sub
MsgBox ("Dateien wurden aktualisiert")
Application.ScreenUpdating = True
End Sub

Bricht aber mit Fehlermeldung ("Erwartet: Bezeichner") ab.
1. Frage: Wie lautet die richtige Syntax?
2. Frage: Wie kann ich erreichen, daß bei einem Fehler im UpDate in der entsprechenden MsgBox auch
der Name des WS erscheint, bei dem der Fehler aufgetreten ist?
Vielen Dank für Eure Hilfe im voraus.
Gruß
Torsten

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Makros aufrufen über cmb_Button
Ramses
Hallo
Lass das "Sub" weg
Call cmb_NL1_Click

Gruss Rainer
AW: Mehrere Makros aufrufen über cmb_Button
26.07.2004 12:52:29
Torsten
Hallo Rainer,
vielen Dank für Deine Rückmeldung.
Deinen Vorschlag hatte ich auch schon probiert; die Fehlermeldung lautete dabei dann:
"Sub oder Function nicht definiert"
Hast Du noch eine andere Idee?
Gruß
Torsten
AW: Mehrere Makros aufrufen über cmb_Button
26.07.2004 13:10:16
Andre
Hi, versuch mal deine ´Subs´ als ´Public Subs´ zu klassifizieren: einfach die Zeile des Makros ´SUB cmb_NL1_Click()´ mit ´Public Sub cmb_NL1_Click()´ ersetzen.
Vielleicht löst das schon ein´s deiner Probleme.
Zum zweiteren: Eine Variabel mit Public nutzen, indem du die Zeile ´Public DeineVariabel as string´ in dein Modul schreibst. Jetzt ist diese Variabel im gesamten Projekt verfügbar.
Dann kannst du modulübergreifend diese Variabel nutzen, indem du sie in jeder deiner Sub ergänzt, sollte diese einen Fehler auswerfen: DeineVariabel = DeineVariabel & "; " & NL1 (z.B. für eine Sub!).
Hoffe du kommst mit den Informationen zurecht.
Gruß Andre
Anzeige
AW: Mehrere Makros aufrufen über cmb_Button
26.07.2004 13:19:13
Torsten
Hallo Andre,
auch Dir ein Dankeschön, daß Du Dich meinem Problem annimst.
Allerdings hilft Dein Ansatz mit "Public Sub..." auch nicht weiter.
Ich bekomme nach wie vor die Meldung: "Sub oder Function nicht definiert".
Deine Lösung mit der Variablen probier' dann aus, wenn das 1. Problem gelöst ist.
Habt Ihr sonst noch Ideen?
Gruß
Torsten
AW: Mehrere Makros aufrufen über cmb_Button
26.07.2004 13:35:58
Andre
Öffne mal bitte eine Arbeitsmappe, erstelle drei Button, kopiere folgende Zeilen in ein Modul und weise jedem Button jeweils ein Makro zu.
Dann probier mal aus die einzelnen Button zu betätigen und lass mich wissen was passiert ist.

Sub Schaltfläche1_BeiKlick()
MsgBox "HÄ"
End Sub


Sub Schaltfläche2_BeiKlick()
MsgBox "HÜ"
End Sub


Sub Schaltfläche3_BeiKlick()
Call Schaltfläche1_BeiKlick
Call Schaltfläche2_BeiKlick
End Sub

mfg Andre
Anzeige
AW: Mehrere Makros aufrufen über cmb_Button
26.07.2004 13:51:33
Torsten
Hallo Andre,
in Deinem kleinen Test ist die Rede von "..kopiere folgende Zeilen in ein Modul..".
Liegt darin vielleicht mein Problem? Denn der VBA-Code zu meinen Buttons liegt auf den einzelnen Tabellenblättern und nicht in einem Modul.
Wenn dem so sein sollte, kann ich denn den Code aus den Tabellenblättern einfach in ein Modul kopieren?
Gruß
Torsten
AW: Mehrere Makros aufrufen über cmb_Button
Andre
Jab, genau.
Einfach alles in ein Modul und schon sollte dein Problem gelöst sein.
Gruß Andre
AW: Errorhandler
26.07.2004 14:25:30
Torsten
Hallo Andre,
ich hoffe, ich werd' jetzt nicht lästig.
Der Code läuft jetzt durch, sofern ich den Errorhandler ausschalte.
Wenn ich den berücksichtige, erhalte ich den Fehler "Sprungmarke nicht definiert".
Den Errorhandler habe ich jetzt auch in ein Modul eingefügt.

Private Sub cmb_UpDateALL_Click()
If InputBox("Bitte Password angeben") = "Kennwort" Then
Call cmb_NL1_Click
On Error GoTo Errorhandler
Call cmb_NL2_Click
On Error GoTo Errorhandler
Errorhandler
Call Errorhandler
Else
End If
MsgBox ("Dateien wurden aktualisiert")
End Sub

Public Sub Errorhandler()
MsgBox ("Ein Fehler ist aufgetreten. Dateien wurden nicht aktualisiert")
Exit Sub
End Sub
Kannst Du mir hier nochmal behilflich sein und mir auch etwas genauer erklären, wie ich in diese Fehlermeldung die Information einbaue, in welchem WS der Fehler aufgetreten ist?
Vielen Dank für Deine Unterstützung (und Geduld :-))
Gruß
Torsten
Anzeige
AW: Errorhandler
26.07.2004 14:39:16
Andre
Kein Thema, dafür ist dieses Forum doch da, also keine Hemmungen beim Fragen.
Warum so kompliziert mit dem Errorhaendler? Bau es so um:

Private Sub cmb_UpDateALL_Click()
If InputBox("Bitte Password angeben") = "Kennwort" Then
DeineVariabel = ""
Call cmb_NL1_Click
Call cmb_NL2_Click
End If
If DeineVariabel <> "" then
MsgBox ("Dateien wurden aktualisiert")
else
MsgBox "Fehler aufgetreten in folgenden Tabellen: " & DeineVariabel
end if
End Sub

Der Error wird nicht in diesem Makro ausgelöst, sondern in den einzelnen Subs, daher mußt du den Errorhaendler jeweils dort einbauen:
Sub cmb_NL1_Click()
On Error GoTo Errorhandler
'Hier dein Code
Exit Sub
Errorhaendler:
DeineVariabel = DeineVariabel & "NL1; "
End Sub
Und das in jedem Sub. Der Code läuft dann durch und gibt dir am Ende eine Meldung, entweder, dass alles aktualisiert wurde oder die Auflistung wo ein Fehler aufgetreten ist.
Und nicht vergessen, die Variabel als Public, sonst ist sie nur für ein Makro gültig:
Public DeineVariabel as string
Anzeige
AW: Errorhandler
26.07.2004 14:59:46
Andre
Keine Sorge, bin jetzt erstmal weg, melde mich morgen, solltest du noch Fragen haben, ok?!
Bis dann.
Gruß Andre
AW: Herzliche Dank, Andre! (mT)
Torsten
Hallo Andre,
ich denke, ich hab' jetzt alles unter Dach und Fach; zumindest läuft der Code jetzt durch. Mal schauen, was passiert, wenn wirklich mal Fehler auftreten.
Im übrigen habe ich Deinen Code an einer Stelle geändert:
If FehlerVariable = "" Then 'statt "", wie Du geschrieben hast
MsgBox ("Dateien wurden aktualisiert")
Else
MsgBox ("Fehler aufgetreten in folgenden Tabellen: " & FehlerVariable)
End If
Ich denke, daß das so richtiger ist.
Nochmals vielen Dank für Deine Unterstützung, ohne die ich das so nicht hinbekommen hätte. Bis bald mal wieder hier im Forum.
Viele Grüße
Torsten
Anzeige
AW: Herzliche Dank, Andre! (mT)
27.07.2004 08:24:54
Andre
Guten Morgen Torsten,
du hast recht, die Änderung ist vollkommen richtig! Sorry.
Aber mir ist noch was aufgefallen: du solltest den Code nochmals umschreiben, sonst bekommst du deine MsgBox auch, wenn man ein falsches Kennwort eingibt!
Entweder so:

Private Sub cmb_UpDateALL_Click()
If InputBox("Bitte Password angeben") = "Kennwort" Then
DeineVariabel = ""
Call cmb_NL1_Click
Call cmb_NL2_Click
Else
exit sub
End If
If DeineVariabel <> "" then
MsgBox ("Dateien wurden aktualisiert")
else
MsgBox "Fehler aufgetreten in folgenden Tabellen: " & DeineVariabel
end if
End Sub

Oder so:

Private Sub cmb_UpDateALL_Click()
If InputBox("Bitte Password angeben") = "Kennwort" Then
DeineVariabel = ""
Call cmb_NL1_Click
Call cmb_NL2_Click
If DeineVariabel <> "" then
MsgBox ("Dateien wurden aktualisiert")
else
MsgBox "Fehler aufgetreten in folgenden Tabellen: " & DeineVariabel
end if
End If
End Sub

Gruß Andre
Anzeige
AW: Herzliche Dank, Andre! (mT)
Torsten
Guten Morgen Andre,
schönen Dank für Deinen Tip.
Nachfolgend mein kompletter Code, durch den ich das schon abgefangen habe:

Private Sub cmb_UpDateALL_Click()
Application.ScreenUpdating = False
If InputBox("Bitte Password angeben") = "Kennwort" Then
Application.StatusBar = "Augenblick bitte. Die Dateien werden aktualisiert"
Call cmb_NL1_Click
Call cmb_NL2_Click
Call cmb_NL3_Click
Call cmb_NL4_Click
Call cmb_NL5_Click
Call cmb_NL6_Click
Call cmb_CI1_Click
Call cmb_CI2_Click
Call cmb_CW1_Click
Call cmb_SERV_Click
Call cmb_Other_Click
Else
MsgBox ("War wohl nix!")
Exit Sub
End If
If FehlerVariable = "" Then
MsgBox ("Dateien wurden aktualisiert")
Else
MsgBox ("Fehler aufgetreten in folgenden Tabellen: " & FehlerVariable)
End If
Application.StatusBar = False
Application.ScreenUpdating = True
End Sub

Gruß
Torsten
Anzeige
AW: Herzlichen Glückwunsch
27.07.2004 09:36:41
Andre
Sauber geschrieben!
Bis bald im Forum.
Gruß Andre
AW: Mehrere Makros aufrufen über cmb_Button
26.07.2004 13:51:21
Claus
Warum rufst Du die anderen Makros nicht mit
Application.run "bla bla bla" auf?
Wenn Du Werte uebernehmen willst kannst Du die ja in den Untermakros in PublicVariable stecken...
Claus
AW: Mehrere Makros aufrufen über cmb_Button
Torsten
Hallo Claus,
vielen Dank für Deine Rückmeldung.
Mein Problem habe ich mit Andre's Hilfe lösen können.
Gruß
Torsten

106 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige