Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abfrage was in einer UserForm angeklickt wurde

Forumthread: Abfrage was in einer UserForm angeklickt wurde

Abfrage was in einer UserForm angeklickt wurde
26.07.2005 23:31:18
Christian
Hallo
Ich hätte mal eine frage:
gibt es eine möglichkeit, das wenn der Benutzer auf irgendeinen button in einer userform klickt, das eine bestimmte funtkion automatisch startet
Die Funtktion soll für alle buttons die selbe sein und die Funktion soll selber "herrausfinden" welcher button gerade gedrückt wurde.
zur erklärung ich habe eine Userform mit 30 Radiobuttons und wenn ich ehrlich bin habe ich keine lust unter jeden button ein makro zu schrieben und 3 zahlen zu ändern
hoffe es gibt da eine möglichkeit
MFg Christian
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Abfrage was in einer UserForm angeklickt wurde
26.07.2005 23:35:03
Ramses
Hallo
diese Anweisung in dein Control

Private Sub CommandButton1_Click()
TellMe (Me.ActiveControl.Name)
End Sub

und das in ein Modul
Sub TellMe(myCtrl As String)
MsgBox myCtrl & " wurde geklickt"
End Sub
Gruss Rainer
Anzeige
AW: Abfrage was in einer UserForm angeklickt wurde
26.07.2005 23:35:22
Matthias
Hallo Christian,
Sooo aufwendig ist das ja nun auch nicht, ich hab dies in einer Minute gebaut:

Private Sub CommandButton1_Click()
Tuwas 1
End Sub
Private Sub CommandButton2_Click()
Tuwas 2
End Sub
Private Sub CommandButton3_Click()
Tuwas 3
End Sub
Private Sub Tuwas(Nr As Integer)
MsgBox "Nummer " & Nr & " wurde gedrückt."
End Sub

Gruß Matthias
Anzeige
AW: Abfrage was in einer UserForm angeklickt wurde
26.07.2005 23:46:27
Leo
Hi,
bei 30 controls lohnt sich allemal ein Klassenmodul. Denke, Nepumuk wird sofort mit einer Lösung auftauchen.
mfg Leo
AW: Abfrage was in einer UserForm angeklickt wurde
27.07.2005 00:09:34
Matthias
Hallo Leo,
glaub ich nicht. Es genügt ja sogar dies:

Private Sub CommandButton1_Click()
Zeig
End Sub
Private Sub CommandButton2_Click()
Zeig
End Sub
Private Sub CommandButton3_Click()
Zeig
End Sub

Und in einem allg. Modul:

Sub Zeig()
MsgBox UserForm1.ActiveControl.Name
End Sub

Gruß Matthias
Anzeige
AW: Abfrage was in einer UserForm angeklickt wurde
27.07.2005 00:14:18
Leo
Hi,
bei 30 controls lohnt sich ein Klassenmodul auf jeden Fall.
Wieso eigentlich in einem Modul?
"Und in einem allg. Modul:

Sub Zeig()
MsgBox UserForm1.ActiveControl.Name
End Sub
"
Das kann ebensogut im Modul der Userform stehen.
mfg Leo
Anzeige
AW: Abfrage was in einer UserForm angeklickt wurde
27.07.2005 09:15:34
Matthias
Hallo Leo,
kann es natürlich auch.
Gruß Matthias
AW: Abfrage was in einer UserForm angeklickt wurde
27.07.2005 08:44:54
Peter
Servus,
allso die Lösungen reichen allemal. Möchte dir nur kurz folgenden Link ans Herz legen, in dem mir Max(Nepumuk) versucht hat Klassen näher zu bringen. Und da es genau um dieses Beispiel ging, hilfts vieleicht.
http://www.online-excel.de/fom/fo_read.php?f=1&bzh=2555&h=2555
MfG Peter
Anzeige
AW: Abfrage was in einer UserForm angeklickt wurde
27.07.2005 11:32:40
Christian
Hallo
dank dir peter dein link hat mich vor einer menge schreibarbeit gerettet.
denn selbst wenn ich in jeden button nur eine zeile hätte schrieben müssen wäre das ein wenig viel geworden
Trotzdem danke für eure hilfe
aber nen besonderen danke an Peter bzw Nepumuk ;-)
AW: Abfrage was in einer UserForm angeklickt wurde
27.07.2005 12:42:47
Ramses
Hallo
Bei aller Liebe:
Das ganze Klassenmodul zu schreiben dauert länger als die lappige Zeile schnell in deine Controls zu kopieren.
Gruss Rainer
Anzeige
;
Anzeige

Infobox / Tutorial

Abfrage was in einer UserForm angeklickt wurde


Schritt-für-Schritt-Anleitung

Um herauszufinden, welcher Button in einer UserForm angeklickt wurde, kannst Du folgende Schritte ausführen:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (ALT + F11).

  2. Erstelle eine UserForm mit mehreren Buttons oder Radiobuttons.

  3. Füge den folgenden Code in die UserForm ein, um die Aktivierung der Buttons zu erkennen:

    Private Sub CommandButton1_Click()
       TellMe (Me.ActiveControl.Name)
    End Sub
    
    Private Sub CommandButton2_Click()
       TellMe (Me.ActiveControl.Name)
    End Sub
    
    ' Füge weitere Buttons hinzu, wenn nötig
  4. Erstelle ein neues Modul und füge den folgenden Code hinzu:

    Sub TellMe(myCtrl As String)
       MsgBox myCtrl & " wurde geklickt"
    End Sub

Jetzt wird bei jedem Klick auf einen Button der Name des Buttons in einer MessageBox angezeigt.


Häufige Fehler und Lösungen

  • Fehler: Die MessageBox zeigt nicht den richtigen Button-Namen an.
    Lösung: Stelle sicher, dass Du Me.ActiveControl.Name in die korrekten Button-Events eingefügt hast.

  • Fehler: Das Makro wird nicht ausgeführt.
    Lösung: Überprüfe, ob die Makros in den Excel-Einstellungen aktiviert sind.


Alternative Methoden

Eine weitere Möglichkeit, die Du verwenden kannst, ist die Verwendung eines allgemeinen Subroutinen für alle Buttons:

  1. Füge den folgenden Code in die UserForm ein:

    Private Sub CommandButton1_Click()
       Zeig
    End Sub
    
    Private Sub CommandButton2_Click()
       Zeig
    End Sub
    
    ' Füge weitere Buttons hinzu
  2. In einem allgemeinen Modul:

    Sub Zeig()
       MsgBox UserForm1.ActiveControl.Name
    End Sub

Diese Methode reduziert den Codeaufwand, da alle Buttons auf die gleiche Subroutine verweisen.


Praktische Beispiele

Hier sind einige Beispiele, wie Du die oben genannten Methoden anwenden kannst:

  1. Mit Radiobuttons: Wenn Du 30 Radiobuttons hast, kannst Du für jeden Button die gleiche Click-Ereignisprozedur verwenden, um den ausgewählten Button zu identifizieren.

    Private Sub OptionButton1_Click()
       TellMe (Me.ActiveControl.Name)
    End Sub
  2. Verwendung von Klassenmodulen: Wenn Du eine komplexere Logik benötigst, könnte die Verwendung eines Klassenmoduls sinnvoll sein, um die Buttons besser zu organisieren.


Tipps für Profis

  • Verwende Klassenmodule: Wenn Du viele Controls hast, kann ein Klassenmodul helfen, den Code übersichtlicher zu gestalten und wiederverwendbar zu machen.
  • Verwende die Tag-Eigenschaft: Du kannst die Tag-Eigenschaft der Buttons nutzen, um zusätzliche Informationen zu speichern, die Du später im Code abrufen kannst.

FAQ: Häufige Fragen

1. Frage: Kann ich die Abfrage auch für andere Control-Typen verwenden?
Antwort: Ja, die Methoden können auch auf andere Controls wie Textfelder und Listenfelder angewendet werden.

2. Frage: Was ist der Vorteil eines Klassenmoduls?
Antwort: Klassenmodule bieten eine strukturierte Möglichkeit, Daten und Funktionen zu kapseln, was die Wartbarkeit des Codes verbessert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige