Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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
Makroaufruf mit Buttons
03.05.2017 00:21:33
Barbaraa
Hallo
habe eine Frage zu einem konkreten Beispiel. Im Anhang habe ich eine Datei hochgeladen, die drei Buttons enthält.
https://www.herber.de/bbs/user/113258.xlsm
Mit jedem dieser Buttons wird ein Makro aufgerufen.
Diese Makros sind einander sehr ähnlich, und deshalb ersuche ich Euch um einer Vereinfachung, die sich diese Ähnlichkeit zunutze macht.
Die Hürde sind die unterschiedlichen Bezeichnungen der Buttons.
Zu Beginn wird der angeklickte Button rot gefärbt und mit einem "Bitte warten" versehen. Dann werden individuelle Makros aufgerufen. Dann wird der Button wieder in die ursprüngliche Farbe gesetzt. Diese beiden Vorgänge konnte ich bereits auslagern. Und zum Schluss kommt noch eine Fehlerverarbeitung, die auch wieder bei allen Buttons gleich ist.
So sieht beispielsweise ein Buttonmakro aus:
Private Sub cmdObst_Click()
'Obst anzeigen
Dim Buttonfarbe As Long
Dim Buttontext As String
On Error GoTo Fehlerabbruch
'Der Button wird rot:
BtnStart cmdObst, Buttonfarbe, Buttontext, "Bitte warten ..."
ObstAnzeigen 3  'Das ist der individuelle Teil
'Der Button wird wieder grün:
BtnEnde cmdObst, Buttonfarbe, Buttontext
Exit Sub
Fehlerabbruch:
MsgBox "Abbruch Fehler"
BtnEnde cmdObst, Buttonfarbe, Buttontext
End Sub
Die weiteren Makros bitte beiliegendem Beispiel zu entnehmen. Ich habe es so einfach wie möglich gestaltet.
Falls das ohne Klassemodule geht, wäre es besser, denn in diesem Bereich habe ich Null Ahnung. Falls nicht, bitte ich um konkrete Vorschläge. Vielleicht lerne ich noch was daraus.
LG, Barbara

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makroaufruf mit Buttons
03.05.2017 06:36:56
Rainer
Hallo Barbara,
du bist doch schon fast am Ziel.
Du kannst deinen Code in die Sub "BtnStart" übernehmen und dort für die Unterschiede einfache WENN Abfragen einfügen, z.B.

If Bt.Name = "cmdObst" Then ObstAnzeigen 3
If Bt.Name = "cmdMonate" Then MonatAnzeigen 2
If Bt.Name = "cmdKombination" Then
MonatAnzeigen 1
ObstAnzeigen 2
End If
Gruß,
Rainer
AW: Makroaufruf mit Buttons
03.05.2017 20:52:58
Barbaraa
Ja, das wäre ein Möglichkeit, hätte da her ein Möglichkeit gesucht, die den aktuellen Makronamen oder angeclickten Button in meinem Beispiel verwendet.
Aber so was haben andere auch schon vergeblich gesucht.
Danke jedenfalls für Deine Antwort.
LG, Barbara
Anzeige
AW: Makroaufruf mit Buttons
04.05.2017 10:43:24
EtoPHG
Hallo Barbara,
Deine Konstrukte sind oft schwer zu verstehen, bzw. deine Absichten zu durchschauen.
Eine bessere Beschreibung der Anforderungen würde viele Unklarheiten beseitigen.
Meinst du vielleiche sowas?:
Private Sub cmdObst_Click()
'Obst anzeigen
Application.Run "Modul1.ObstAnzeigen", 3
End Sub
Private Sub cmdMonate_Click()
Application.Run "Modul1.MonatAnzeigen", 2
End Sub
Private Sub cmdKombination_Click()
'Monat und Obst anzeigen
Application.Run "Modul1.ObstAnzeigen", 3
Application.Run "Modul1.MonatAnzeigen", 2
End Sub
Gruess Hansueli
Anzeige
AW: Makroaufruf mit Buttons
04.05.2017 22:56:59
Barbaraa
Hi Hansueli
Eine bessere Beschreibung der Anforderungen würde viele Unklarheiten beseitigen?
Tja, ich dachte, es sei gut beschrieben. Ich dachte auch, dass das ein Problemstellung ist, die auch bei anderen vorkommt, nämlich immer dann, wenn man länger dauernde Makros mit einem Buttonklick aufruft, und diese Buttons in dieser Zeit auf rot und dann wieder auf ihre Bereitschaftsfarbe springen.
Bin jetzt mit folgender Lösung zufrieden:
Private Sub cmdObst_Click()
'Obst anzeigen
Dim Buttonfarbe As Long
Dim Buttontext As String
Dim Button As CommandButton
On Error GoTo Fehlerabbruch
Set Button = cmdObst
BtnStart Button, Buttonfarbe, Buttontext, "Bitte warten ..."
ObstAnzeigen 3
BtnEnde Button, Buttonfarbe, Buttontext
Exit Sub
Fehlerabbruch:
MsgBox "Abbruch Fehler"
BtnEnde Button, Buttonfarbe, Buttontext
End Sub
Damit muss ich beim Anlegen eines neuen Buttons nur ein Minimum (2) an Dingen austauschen (hier in Fett gehalten), und die Sache passt.
Danke allen!
LG, Barbara
Anzeige
AW: Makroaufruf mit Buttons
08.05.2017 06:39:51
Rainer
Hallo Barbara,
du hast mich offenbar nicht verstanden.
Alle deine Buttons bekommen den gleichen Code:
Private Sub cmdObst_Click()
BtnStart
End Sub
In der Sub "BtnStart" kannst du dann mit meinem Code den Button-Namen auslesen und die entsprechenden Subs starten, wenn sie denn von Button-Namen abhängig sind.
Klar soweit?
Gruß,
Rainer
AW: Makroaufruf mit Buttons
08.05.2017 22:21:51
Barbaraa
Hallo Rainer,
verstehe Dich immer noch nicht.
Wie kommt denn bei Dir der Button-Name in die Sub "BtnStart"? Du übergibst ja gar nichts, und es werden doch 4 Argumente von "BtnStart" erwartet.
Vielleicht kannst Du "BtnStart" nochmals genauer beschreiben.
LG,
Barbara
Anzeige
AW: Makroaufruf mit Buttons
09.05.2017 11:54:48
Rainer
Hallo Barbara,
ich hatte einen Denkfehler. Der Buttonname muss definiert werden, das ist richtig.
Aber ich habe den Code jetzt so vereinfacht:
Code der "Tabelle1":

Option Explicit
Private Sub cmdObst_Click()
BtnStart cmdObst
End Sub
Private Sub cmdMonate_Click()
BtnStart cmdMonate
End Sub
Private Sub cmdKombination_Click()
BtnStart cmdKombination
End Sub
Code des Moduls "Buttonfunktionen":
Option Explicit
Public Buttonfarbe As Long
Public Buttontext As String
Public Aktivtext As String
Sub BtnStart(Bt As CommandButton)
' Commandbuttoneigenschaften werden gespeichert
' Button wird auf rot gesetzt
Aktivtext = "Bitte Warten"
Buttonfarbe = Bt.BackColor
Buttontext = Bt.Caption
Bt.BackColor = vbRed
Bt.Caption = Aktivtext
If Bt.Name = "cmdObst" Then ObstAnzeigen 3
If Bt.Name = "cmdMonate" Then MonatAnzeigen 2
If Bt.Name = "cmdKombination" Then
MonatAnzeigen 1
ObstAnzeigen 2
End If
' Commandbuttoneigenschaften werden zurückgesetzt
Bt.BackColor = Buttonfarbe
Bt.Caption = Buttontext
End Sub
Gruß,
Rainer
Anzeige
AW: Makroaufruf mit Buttons
10.05.2017 00:07:02
Barbaraa
Das ist ein gangbarer Weg.
Der angeklickten Buttonname dürfte nicht greifbar sein.
Vielen Dank für Deine Hilfe.
AW: Makroaufruf mit Buttons
10.05.2017 06:56:09
Rainer
Hallo Barbara,
nein, es scheint Excel kann nicht den Namen der gerade aktiven Sub ausgeben.
Viele Grüße,
Rainer

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige