Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Button für mehrere Zeilen dynamisch erzeugen

Forumthread: Button für mehrere Zeilen dynamisch erzeugen

Button für mehrere Zeilen dynamisch erzeugen
freichle
Hallo,
wie kann ich über eine Action immer einen neuen Button für eine neue Zeile anlegen?
- Der Button muss in der neuen Zeile positioniert sein.
- Jeder neu erzeugte Button greift auf die gleiche Action/Funktion in VBA zurück.
- Jeder Button übergibt an die Action/Funktion die Zeilennummer.
Danke und Gruß
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Button für mehrere Zeilen dynamisch erzeugen
02.02.2010 16:14:03
Ramses
Hallo
"...wie kann ich über eine Action immer einen neuen Button für eine neue Zeile anlegen.."
Wozu ?
Damit blähst du deine Mappe nur unnötig auf ?
"... eine Action..."
Das gibt es beim Film, aber nicht in EXCEL.
WELCHES Ereignis soll denn den neuen Button einfügen ?
Welcher Button soll denn einfefügt werden ?
Commandbutton oder Button aus der Formularleiste ?
"...auf die gleiche Action/Funktion..."
WELCHE Funktion ? In der Tabelle, in der Mappe ?
Eine Userdefinierte Funktion oder was sonst ?
"...- Jeder Button übergibt an die Action/Funktion die Zeilennummer...."
Das geht so
Sub DeineFunktion(tmpRow as Long)
End Sub Der Aufruf aus einem Commandbutton erfolgt dann z.B. so
Private Sub CommandButton1_Click()
Call DeineFunktion(Me.CommandButton1.TopLeftCell.Row)
End Sub
Gruss Rainer
Anzeige
AW: Button für mehrere Zeilen dynamisch erzeugen
02.02.2010 17:44:48
freichle
Hallo
"...wie kann ich über eine Action immer einen neuen Button für eine neue Zeile anlegen.."
Wozu ?
Damit blähst du deine Mappe nur unnötig auf ?
- Ich möchte den Inhalt einer Zeile per Mail senden und es ist anwenderfreundlicher, wenn der Benutzer es mit einem Button in der gleichen Zeile durchführen kann
"... eine Action..."
Das gibt es beim Film, aber nicht in EXCEL.
WELCHES Ereignis soll denn den neuen Button einfügen ?
- ein Makro
Welcher Button soll denn einfefügt werden ?
Commandbutton oder Button aus der Formularleiste ?
Ein "Button"
"...auf die gleiche Action/Funktion..."
WELCHE Funktion ? In der Tabelle, in der Mappe ?
Eine Userdefinierte Funktion oder was sonst ?
- Eine Makro
"...- Jeder Button übergibt an die Action/Funktion die Zeilennummer...."
Das geht so
Anzeige
AW: Button für mehrere Zeilen dynamisch erzeugen
03.02.2010 01:00:12
Daniel
Hi
besser ist in diesem Fall, die "Aktion" über einenDoppelklick in der entsprechenden Zeile zu starten.
das braucht keinen Button und ist viel einfacher zu realisieren.
zum Testen mal dieses Makro in das Modul des Tabllenblatts stellen und mit Doppelklick auf eine Zeile testen:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Angeklickt: Zeile " & Target.Row
End Sub
Gruss, Daniel
Anzeige
AW: Button für mehrere Zeilen dynamisch erzeugen
03.02.2010 10:26:15
freichle
Danke, ist eine gute Idee!
Kann man das auch auf eine Spalte begrenzen und mit nur einem Klick durchführen?
Das restliche Dokument soll man ja normal bearbeiten können und dafür benötigt man auch den Doppelklick.
AW: Button für mehrere Zeilen dynamisch erzeugen
03.02.2010 21:59:58
Daniel
Hi
du kannst ja im Makro prüfen, welche Zeile oder Spalte angeklickt wurde und im Makro dann entsprechend reagieren.
den Doppelklick benötigt man zum Bearbeiten des Dokuments eigentlich nicht, aber die normale Doppelklickfunktion wird nach dem Makrolauf trotzdem ausgeführt.
wenn das nicht passieren soll, musst du die Variable CANCEL = TRUE setzen.
für eine Ein-Klick-Aktion müsstest du das Event "Selection_Change" verwenden.
das würde dann, mit Begrenzung auf Spalte 1 so aussehen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then 'Prüfung Spalte 1
If Target.Cells.Count = 1 Then 'Prüfung nur 1 Zelle angeklickt
MsgBox "Gewählt: Zeile " & Target.Row
End If
End If
End Sub

Gruß, Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamisch Buttons für mehrere Zeilen in Excel erstellen


Schritt-für-Schritt-Anleitung

Um dynamisch Buttons in Excel zu erstellen, die in neuen Zeilen positioniert sind und eine bestimmte Funktion aufrufen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Rechtsklicke im Projekt-Explorer auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden VBA-Code ein:

    Sub ButtonHinzufuegen()
       Dim btn As OLEObject
       Dim neueZeile As Long
    
       neueZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1 ' Nächste freie Zeile
       Set btn = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
               Link:=False, DisplayAsIcon:=False, Left:=Cells(neueZeile, 1).Left, Top:=Cells(neueZeile, 1).Top)
       btn.Caption = "Aktion ausführen"
       btn.OnAction = "DeineFunktion"
    End Sub
    
    Sub DeineFunktion()
       MsgBox "Button gedrückt in Zeile " & ActiveSheet.Buttons(Application.Caller).TopLeftCell.Row
    End Sub
  4. Führe das Makro ButtonHinzufuegen aus:

    • Du kannst das Makro im VBA-Editor oder direkt in Excel über Entwicklertools > Makros ausführen.

Häufige Fehler und Lösungen

  • Problem: Der Button wird nicht angezeigt.

    • Lösung: Stelle sicher, dass der Button in einer sichtbaren Zeile erstellt wird und dass keine Filter aktiv sind, die die Sichtbarkeit der Zeile einschränken.
  • Problem: Der Button löst keine Aktion aus.

    • Lösung: Überprüfe, ob der Name der Funktion im Code korrekt angegeben ist. Achte darauf, dass die Funktion existiert und keine Syntaxfehler enthält.

Alternative Methoden

Falls du keinen Button verwenden möchtest, kannst du die Aktionen auch über Doppelklicks oder Änderungen in Zellen auslösen. Hier ist ein Beispiel für ein Makro, das eine Nachricht anzeigt, wenn du auf eine bestimmte Spalte klickst:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then ' Nur auf Spalte 1 reagieren
        MsgBox "Gewählt: Zeile " & Target.Row
    End If
End Sub

Diese Methode erfordert keinen Button und kann die Benutzerfreundlichkeit erhöhen.


Praktische Beispiele

  1. Button zum Versenden einer E-Mail: Du könntest eine Funktion hinzufügen, die den Inhalt der Zeile per E-Mail sendet, wenn der Button gedrückt wird.

  2. Dynamische Berichterstattung: Füge Buttons hinzu, die spezifische Berichte basierend auf den Zeileninhalten generieren.


Tipps für Profis

  • Makros optimieren: Vermeide unnötige Berechnungen in deinen Makros, um die Performance zu steigern.
  • Benutzerfreundlichkeit: Stelle sicher, dass deine Buttons klar beschriftet sind, damit Benutzer wissen, was sie tun.
  • Fehlerbehandlung einbauen: Implementiere Fehlerbehandlungsroutinen in deinen VBA-Codes, um unerwartete Probleme zu lösen.

FAQ: Häufige Fragen

1. Kann ich die Buttons auch farblich anpassen? Ja, du kannst die Eigenschaften des Buttons im VBA-Code anpassen, indem du z.B. btn.BackColor = RGB(255, 0, 0) hinzufügst, um die Hintergrundfarbe rot zu machen.

2. Wie viele Buttons kann ich auf einem Blatt haben? Es gibt keine feste Begrenzung, aber zu viele Buttons können die Leistung von Excel beeinträchtigen. Überlege, ob du alternative Methoden verwenden möchtest, wie z.B. Doppelklick-Aktionen.

3. Funktioniert das in allen Excel-Versionen? Die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, jedoch können einige Unterschiede in der Benutzeroberfläche auftreten. Achte darauf, dass du eine Version mit VBA-Unterstützung verwendest.

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