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

Prozedur soll erkennen von wo sie aufgerufen wurde

Prozedur soll erkennen von wo sie aufgerufen wurde
29.05.2004 20:02:00
wo
Hallöchen,
eigentlich kein Problem: in einem Sheet sind viele CommanButtons, die alle die gleiche Prozedur aufrufen sollen. In Abhängigkeit davon, welcher CommandButton geclickt wurde, soll diese Prozedur unterschiedliche Aufgaben ausführen. Als Beispiel habe ich eine Excel-Datei hochgeladen die veranschaulicht, wie ich das gelöst habe. Funktioniert. Aber: in der Anwendung werden wahrscheinlich viele (hundert oder mehr) Buttons sein, dann wird diese Methode SEHR umständlich. Gibt es eine Möglichkeit, dass jeder Button immer die gleiche Prozedur anspringt und die Prozedur dann ermittlet, welcher Button sie aufgerufen hat und dann entsprechend reagiert? Ok, meine Frage geht mehr in Richtung "elegante Programmierung", funkionieren tut die Sache ja so, wie ich es gelöst habe. Befriedigt halt nicht.
Vielen Dank Für kreative Vorschläge, eilt übrigens nicht.
Gruß an Alle, Frank

Die Datei https://www.herber.de/bbs/user/6902.xls wurde aus Datenschutzgründen gelöscht

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prozedur soll erkennen von wo sie aufgerufen wurde
wo
Hallo
Das in deinen Command_Button
Option Explicit

Private Sub CommandButton1_Click()
Auswerten (Me.CommandButton1.Name)
End Sub

In ein Modul
Sub Auswerten(CMD_Name As String)
Msgbox CMD_Name
End Sub
Gruss Rainer
AW: Prozedur soll erkennen von wo sie aufgerufen wurde
wo
Ein Programm, das einige hundert oder noch mehr Buttonh erfordert, ist nicht
gut konzipiert.
Vielleicht verrennst du dich zu sehr in deine Lösung. Beschreib mal, was
du eigentlich erreichen willst.
Kurt
AW: Prozedur soll erkennen von wo sie aufgerufen wurde
29.05.2004 20:35:10
wo
Hallo Frank,
benutze die Accelerator-Eigenschaft der Buttons und ein Klassenmodul:
https://www.herber.de/bbs/user/6905.xls
Und setze die TakeFokusOnKlick-Eigenschaft auf False. Dann bleibt die Tabelle aktiv.
Gruß
Nepumuk
Anzeige
Korrektur!!!!
29.05.2004 20:56:14
Nepumuk
Hallo Frank,
ich habe gerade mitbekommen, das die Accelerator-Eigenschaft maximal ein Zeichen lang sein kann. Darum habe ich das Programm auf die Nummer des Buttons umgebaut.
https://www.herber.de/bbs/user/6906.xls
Gruß
Nepumuk
AW: Korrektur!!!!
29.05.2004 21:35:57
Frank
Hallo Nepumuk,
Vielen Dank! Das war es, was ich suchte. Beim Einstellen einer Frage in dieses Forum kann man unter "Level" leider nur "VBA-nein", "VBA-gut" und "VBA-Profi" wählen, da mußte ich mich wohl für "gut" entscheiden, "Anfänger" wäre aber richtiger gewesen. Ich gebe zu, dass ich den Code nicht 100%-ig verstanden habe. Muss ich noch dran knabbern. Wie dem auch sei: Du hast mir sehr geholfen! Noch mal danke schön dafür!
Mach mal Pause von Excel und genieße die Pfingsttage!
Viel Grüße, Frank
Anzeige
AW: Prozedur soll erkennen von wo sie aufgerufen wurde
29.05.2004 21:15:20
wo
Hallo Ramses,
vielen Dank für die schnelle Antwort. Dein Vorschlag funktioniert. Leider entbindet er mich nicht von der umständlichen Prorammierung von jeweils einer Prozedur für jeden CommandButton. Aber immerhin ist Deine Anregung interessant, kann ich bestimmt in anderen Profekten gebrauchen.
Schöne Pfingsttage wünsche ich Dir.
Gruß
Frank
Hokus Pokus Fidibus,... Excel zaubert... ?
Ramses
Hallo
"...entbindet er mich nicht von der umständlichen Prorammierung von jeweils einer Prozedur für jeden CommandButton.."
Das ist das Problem an VBA,... EXCEL kann nicht hellsehen, was an welchem Button gemacht werden soll.
Ansonsten schau dir mal Select Case in der Hilfe an.
Dann kannst du zumindest alles in ein Modul packen
Gruss Rainer
Anzeige
AW: Hokus Pokus Fidibus,... Excel zaubert... ?
29.05.2004 21:51:06
Frank
Hallo Rainer,
ich hätte es kaum für möglich gehalten, aber Excel zaubert tatsächlich! Sieh Dir mal den Code von Nepumuk an. Ok, ich hätte das nie alleine hingekriegt. Und wie schon in der Antwort an Nepumuk erwähnt: ich habe das auch noch nicht so ganz verstanden. Aber es funktioniert!
Aber die Art, wie Du in Deinem Vorschlag den Namen des Buttons an die Prozedur übermittelt hast ist für mich auch interessant. Gegenüber der von mir verwendeten Methode bietet Dein Vorschlag einige Vorteile.
Vielen Dank dafür!
Grüße, Frank
AW: Hokus Pokus Fidibus,... Excel zaubert... ?
Ramses
Hallo
"...aber Excel zaubert tatsächlich! ..."
Mein Code macht im Prinzip das gleiche wie der von Nepumuk,... nur habe ich die Fragestellung nicht so verstanden ;-)

Private Sub CommandButton1_Click()
Auswerten (Me.CommandButton1.Name)
End Sub

Sub Auswerten(CMD_Name As String)
Select Case Left(CMD_Name, 1)
Case 1 To 4
MsgBox "1-4 Gedrückt"
Case 5
MsgBox "Button 5 gedrückt"
End Select
End Sub
Allerdings auch hier die gleiche Limitierung wie bei Nepumuks Code mit Mid(CoButton.Name, 7)
Auch hier kann er nur ein Zeichen extrahieren,... und wenn du wie du schreibst "..in der Anwendung werden wahrscheinlich viele (hundert oder mehr).." hast, funktioniert das auch nicht mehr, sondern du musst dann die letzten Zahlen interpretieren.
Trotzdem, viel Spass
Gruss Rainer
Anzeige
AW: Hokus Pokus Fidibus,... Excel zaubert... ?
29.05.2004 22:18:28
Nepumuk
Hallo Rainer,
die Aussage: Auch hier kann er nur ein Zeichen extrahieren ist nicht richtig. Mit Mid(CoButton.Name, 7) hole ich alle Zeichen ab der siebten Stelle aus dem Namen. Und wenn der Name Button2004 ist, dann hole ich 2004 heraus.
Gruß
Nepumuk
Sorry ;-)
Ramses
Hallo Nepumuk
...das habe ich auch gerade gemerkt :-(
Da hat mich das 3:2 wohl ein wenig irritiert ;-)
Gruss Rainer
AW: Prozedur soll erkennen von wo sie aufgerufen wurde
29.05.2004 21:23:10
wo
Hallo Kurt,
Ok, du hast im Grunde Recht. Ich versuche hier ein Problem für einen Freund zu lösen, der es halt so und nicht anders haben will. Ich persönlich würde das Problem auch anders lösen, über eine ComboBox z.B. Aber manchmal ist es halt auch einfach interessant, ungewöhnliche Wege zu gehen. Und mal unabhängig davon, ob diese Wege immer sinnsoll sind oder eben auch nicht, man lernt dabei.
Viele Grüße und Danke für Deine Antwort.
Gemütliche Pfingsttage wünscht Dir Frank
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige