VBA Sub prüft wer sie aufgerufen hat

OP #4201881
Lesenswert?
• ▲
▼
Hallo zusammen

Ich habe in einer Excel Tabelle vier Tasten,
(Formular-Steuerelemente) die eine Sub
mit einer umfangreichen Analyse starten.
Je nach Taste ändert sich nur ein Parameter.

Ich fände es jetzt elegant, wenn alle Tasten
die gleiche Sub aufrufen. Diese prüft von
welcher Taste das "Startsignal" gekommen ist
und wählt den passenden Startparameter.

Es müsste also irgend eine Form der
Übergabe von der Taste zur Sub erfolgen.
Etwa in der Form:
1
Sub anayse(Get_Taste As Integer) 'oder so
Mit welchem Befehl kann ich ermitteln,
welche Taste der Nutzer gedrückt hat?
#4202166
Lesenswert?
• ▲
▼
Reinhard #. schrieb:
> Ja klar, das ist die zweitbeste Lösung.
> Aber ich möchte die Beste ;-)

Besser ist die nicht. Mir gefällt es besser, wenn die Buttons möglichst 
dumm sind und jede ihre eigene Funktion aufrufen. Ansonsten wandert ja 
schon etwas Logik in die Buttons, bzw. musst du dann ja in der "großen" 
Funktion erst wieder prüfen welcher Button gedrückt wurde. Damit macht 
die Funktion schon wieder mehr als sie sollte.
Also wenn es nicht aus Prinzip so sein muss, dann empfehle ich die 
Lösung von tg, welche er zwar "nicht ganz so elegant" nennt, ich aber 
viel eleganter finde.
Gast #4202353
Lesenswert?
• ▲
▼
Reinhard #. schrieb:
> Ja klar, das ist die zweitbeste Lösung.

Ist es nicht. Du kannst natürlich in einer Einheitsfunktion irgendwie 
die zuletzt gedrückte Taste bestimmen und danach verzweigen, aber es ist 
wesentlich einfacher und OO-gerechter, jeder Taste ihre Routine 
zuzuordnen, die weiss ja schon die Taste, und so kannst du sie an eine 
gemeinsame Auswertung übergeben, sofern das überhaupt sinnvoll ist, z.B. 
bei Zifferntasten - gibt es nichts gemeinsames, muss man das auch nicht 
in eine einzige Routine zwingen.

Einzusehen ist eine gemeinsame Behandlung bei 10 Zifferntasten oder 26 
Buchstaben, bei 4 Tasten ist das eher lachhaft.

Georg
Gast #4203473
Lesenswert?
• ▲
▼
Thomas schrieb:
> Ja, aber wie?

Du kannst den KeyPressed Event benutzen und den ASCII-Code in eine 
Variable schreiben, die du dann abfragst.

Prinzipiell ist der Umgang mit der Tastatur in VBA eventgesteuert. Was 
auch geht: in der Behandlungsroutine für den Button (für jeden eine 
eigene) schreibst du in eine Variable, welcher Button gedrückt wurde, 
und damit rufst du den gemeinsamen Code für alle Keys auf.

Georg

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.