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

wert von button in vba code übergeben..

Forumthread: wert von button in vba code übergeben..

wert von button in vba code übergeben..
09.03.2015 10:10:04
button
Hallo Leute...
ich hab mal folgende Frage... ich habe in meiner Exceltabelle ganz viele Buttons... geht es irgendwie das ich nicht für jeden Button einen im Grunde selben Code eingeben muss... sondern irgendwie die Buttonbezeichnung dafür benutzen kann...
Mal ein kleines Beispiel:
Private Sub Button1_Click()
Range("M1").ClearContents
End Sub

Private Sub Button2_Click()
Range("M2").ClearContents
End Sub

Private Sub Button3_Click()
Range("M3").ClearContents
End Sub
usw. ...
ist es nun irgendwie möglich die Zahl in der Buttonbezeichnung in den Code zu übernehmen? Das es zum Beispiel dann so aussehen würde:
Private Sub Button(1=i)_Click()
Range("M"& i).ClearContents
End Sub
:)
Vielen lieben Dank schon mal...

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wert von button in vba code übergeben..
09.03.2015 10:15:57
button
Application.Caller

AW: wert von button in vba code übergeben..
09.03.2015 11:56:57
button
mh irgendwie finde ich da im Netz nichts brauchbares... kannst du vielleicht "Application.Caller" mal an diesem kleinen Beispiel erklären. Da wäre ich dir sehr dankbar...

AW: wert von button in vba code übergeben..
09.03.2015 11:59:11
button
ich sehe kein Beispiel im letzten Beitrag. Ein Msgbox oder was Du willst (Select Case) davor schreiben hätte ich nicht als Problem angesehen.
Gruß Hajo

Anzeige
ActiveX oder Formularsteuerelement? (owT)
09.03.2015 12:07:29
EtoPHG

AW: wert von button in vba code übergeben..
09.03.2015 13:02:49
button
ok ich meinte das Beispiel was ich hier schon aufgeführt habe... es handelt sich um ActiveX Steuerelemente...

AW: wert von button in vba code übergeben..
09.03.2015 13:38:55
button
Hallo Eisert,
Schon erstaunlich, wie einfach mal drauflosprogrammiert wird, und man dann nach Kurzem anstösst.
1000 x einfacher wäre ein BeforeDoubleClick_ Ereignis auf die Zeile im Tabellenblatt.
Aber wenn du dir Mühe machen willst: Klassenmodul für ActiveX-Controls in Tabellen
Gruess Hansueli

Anzeige
AW: wert von button in vba code übergeben..
09.03.2015 14:46:41
button
Verstehe nicht so richtig was du mir damit sagen willst...
Also machen wir es noch einfacher die Buttons heißen 1, 2, 3, usw. ...
Private Sub 1_Click()
Call Makroxy
End Sub

Private Sub 2_Click()
Call Makroxy
End Sub

Private Sub 3_Click()
Call Makroxy
End Sub
usw...
ist es nun irgendwie möglich den Buttonnamen also die 1, 2, 3, usw. ... der Variable "i" zuzuordnen damit ich mit der dann weiter arbeiten kann?
Blöd gedacht etwa so...
Sub Makroxy()
i = Buttonname
Range("M"& i).ClearContents
End Sub

Anzeige
AW: wert von button in vba code übergeben..
09.03.2015 14:58:35
button
Hallo,
Also machen wir es noch einfacher die Buttons heißen 1, 2, 3, usw. ...
Private Sub 1_Click()
Call Makroxy(1)
End Sub
Private Sub 2_Click()
Call Makroxy(2)
End Sub
Private Sub 3_Click()
Call Makroxy(3)
End Sub
Sub Makroxy(i as integer)
cells(i,13).ClearContents
End Sub
Gruß
Rudi

Anzeige
AW: wert von button in vba code übergeben..
10.03.2015 15:19:50
button
Super Rudi... genau sowas wollte ich... vielen lieben Dank... siehste @Hansueli geht doch ganz einfach, auch wenn man viel Wissen hat, muss man die mit weniger nicht damit erschlagen... ;)... trotzdem dir auch vielen Dank für deine Mühe... MfG

AW: wert von button in vba code übergeben..
09.03.2015 15:00:38
button
Hallo Eisert,
Es wäre der Kommunikation äusserst zuträglich, wenn du eine Anrede und einen Gruss vor und nach deinen Elaboraten anhängen könntest. Ich weiss nicht wen du ansprichst. Deine Lösung kann so einfach, wie du dir das vorstellst, nicht funktionieren. Ich habe dir einen Link zu einem Beispiel der Klassen-Programmierung für Steuerelemente gepostet. Wenn du damit nicht zurecht kommst, dann musst du halt alles ausprogrammieren. Ein Alternativ-Vorschlag habe ich ebenfalls gemacht. Wenn du den nicht verstehst, kann ich auch nicht weiterhelfen.
Gruess Hansueli
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Werte von Buttons in VBA übergeben


Schritt-für-Schritt-Anleitung

Um den Wert eines Buttons in VBA zu übergeben, kannst du eine zentrale Subroutine verwenden, die den Button-Namen als Parameter erhält. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Erstelle mehrere ActiveX-Buttons in deiner Excel-Tabelle.

  2. Füge den folgenden VBA-Code in das VBA-Editorfenster ein (drücke ALT + F11, um den Editor zu öffnen):

    Private Sub Button1_Click()
        Call Makroxy(1)
    End Sub
    
    Private Sub Button2_Click()
        Call Makroxy(2)
    End Sub
    
    Private Sub Button3_Click()
        Call Makroxy(3)
    End Sub
    
    Sub Makroxy(i As Integer)
        Cells(i, 13).ClearContents
    End Sub
  3. Ändere die Button-Namen in den Private Sub-Prozeduren entsprechend deinen Button-Namen.

  4. Teste die Buttons, indem du sie klickst. Der Inhalt der entsprechenden Zelle in Spalte M wird gelöscht.

Mit dieser Methode sparst du dir die wiederholte Codierung für jeden Button und erreichst eine effizientere Nutzung von VBA in Excel.


Häufige Fehler und Lösungen

  • Fehler: "Sub oder Funktion nicht definiert"

    • Lösung: Stelle sicher, dass die Subroutine Makroxy korrekt definiert ist und sich im selben Modul wie die Button-Events befindet.
  • Fehler: Button reagiert nicht

    • Lösung: Überprüfe, ob die Buttons korrekt mit den Private Sub-Prozeduren verknüpft sind.
  • Inhalt wird nicht gelöscht

    • Lösung: Stelle sicher, dass der Index i korrekt an die Makroxy-Subroutine übergeben wird.

Alternative Methoden

Eine alternative Methode besteht darin, das Application.Caller-Objekt zu verwenden, um den Namen des Buttons dynamisch zu ermitteln. Hier ein Beispiel:

Sub Button_Click()
    Dim buttonName As String
    buttonName = Application.Caller
    Dim i As Integer
    i = CInt(buttonName) ' Konvertiere den Button-Namen in eine Zahl
    Cells(i, 13).ClearContents
End Sub

Mit dieser Methode benötigst du nur eine Subroutine, die für alle Buttons funktioniert. Du musst lediglich Button_Click für alle Buttons anstelle von spezifischen Private Sub-Prozeduren verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die Button-Klicks in VBA effektiv gestalten kannst:

  1. Alle Buttons auf einmal löschen:

    Sub AlleLoeschen()
       Dim i As Integer
       For i = 1 To 3 ' Anzahl der Buttons
           Cells(i, 13).ClearContents
       Next i
    End Sub
  2. Daten in eine andere Zelle kopieren:

    Sub KopiereDaten(i As Integer)
       Cells(i, 14).Value = Cells(i, 13).Value ' Kopiert von Spalte M nach N
    End Sub

Diese Beispiele helfen dir, die Funktionalität deiner Buttons zu erweitern und verschiedene Aufgaben in Excel effizient zu erledigen.


Tipps für Profis

  • Verwende Module: Organisiere deinen Code in Modulen, um die Übersichtlichkeit zu erhöhen.
  • Debugging: Nutze die Debugging-Tools in VBA, um Fehler schnell zu identifizieren.
  • Kommentare hinzufügen: Kommentiere deinen Code, um die Wartbarkeit zu verbessern.

Die Verwendung von gut strukturiertem und kommentiertem Code in VBA erleichtert das Arbeiten mit komplexen Excel-Automatisierungen.


FAQ: Häufige Fragen

1. Wie kann ich mehr als drei Buttons verwalten? Du kannst den Code leicht anpassen, indem du eine Schleife verwendest, um die Subroutine für alle Buttons aufzurufen.

2. Ist es besser, ActiveX- oder Formularsteuerelemente zu verwenden? Das hängt von deinen Anforderungen ab. ActiveX-Buttons bieten mehr Flexibilität, während Formularsteuerelemente einfacher zu handhaben sind.

3. Funktioniert dieser Code in Excel 2016? Ja, dieser Code ist mit Excel 2010 und neueren Versionen kompatibel.

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