wie kann ich die Postion eines Buttons (habe mehrere auf einem Tabellenblatt)
abfragen, um so festzustellen, welcher Button gedrückt wurde. Weil - je nachdem welcher Button gedrückt wurde, soll ein entsprechendes Makro starten.
Vielen Dank
W.Mommers
Private Sub CommandButton1_Click()
Call MeinMakro(1)
End Sub
Private Sub CommandButton2_Click()
Call MeinMakro(2)
End Sub
Option Explicit
Sub tt()
Dim ov, Starten, Adobe
Adobe = "C:\Programme\Adobe\Acrobat 7.0\Reader\AcroRd32.exe "
Set ov = ActiveSheet.Shapes(Application.Caller)
Starten = Shell(Adobe & Cells(ov.TopLeftCell.Row, ov.TopLeftCell.Column - 1))
End Sub
Sub tt1()
Dim ov, Starten, Adobe
Set ov = ActiveSheet.Shapes(Application.Caller)
MsgBox Cells(ov.TopLeftCell.Row, ov.TopLeftCell.Column).Address
End Sub
Sub tt2()
Call PDFAnzeigen(Application.Caller)
End Sub
Sub PDFAnzeigen(ByVal Bildnme As String)
'aus Tabelle2 mit Vlookup den PDF-Dateinamen zu Bildname holen und anzeigen
End Sub
Private Sub Commandbutton1_Click()
End Sub
Sub ButtonMakro(ByVal welcherButton As Integer)
Select Case welcherButton
Case 1
Makro für Button 1
Case 2
Makro für Button 2
Case 3
Makro für Button 3
usw
End Select
End Sub
Private Sub Commundbutton1_Click()
Call ButtonMakro(1)
End Sub
Private Sub Commundbutton2_Click()
Call ButtonMakro(2)
End Sub
Private Sub Commundbutton3_Click()
Call ButtonMakro(3)
End Sub
usw
select case application.caller
case "rechteck 1"
case "rechteck 2"
end select
Vorbereitung: Stelle sicher, dass Du Buttons in Deinem Excel-Dokument hast. Diese können entweder aus der Formular-Symbolleiste oder der Steuerelement toolbox stammen.
Makro erstellen: Öffne den VBA-Editor (Alt + F11) und erstelle ein neues Modul. Füge folgendes Makro ein:
Option Explicit
Sub tt()
Dim ov As Object
Dim Starten As Variant
Dim Adobe As String
Adobe = "C:\Programme\Adobe\Acrobat 7.0\Reader\AcroRd32.exe "
Set ov = ActiveSheet.Shapes(Application.Caller)
Starten = Shell(Adobe & Cells(ov.TopLeftCell.Row, ov.TopLeftCell.Column - 1).Value)
End Sub
Button zuweisen: Gehe zurück zu Excel, klicke mit der rechten Maustaste auf den Button und wähle „Makro zuweisen“. Wähle das gerade erstellte Makro tt
.
Funktion testen: Klicke auf den Button, um sicherzustellen, dass das Makro die entsprechende PDF-Datei öffnet.
Zellposition abfragen: Um die Position des Buttons zu ermitteln, kannst Du den folgenden Code verwenden:
MsgBox Cells(ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row, ActiveSheet.Shapes(Application.Caller).TopLeftCell.Column).Address
PDF-Datei öffnet nicht: Überprüfe den Pfad zur PDF-Datei. Stelle sicher, dass er korrekt ist und die Datei existiert.
Zellposition bleibt leer: Achte darauf, dass Du die TopLeftCell
korrekt abfragst. Verwende Set rngZelle = ActiveSheet.Shapes(Application.Caller).TopLeftCell
.
Wenn Du mit mehreren Buttons arbeitest, die alle das gleiche Makro verwenden sollen, kannst Du normale Grafikelemente anstelle von Buttons verwenden. Der Vorteil ist, dass Du mehr Formatierungsoptionen hast und die Zuweisung des Makros einfacher ist.
Du kannst die Button-Klicks mit Application.Caller
abfragen, um den Namen des Shapes zu erhalten. Hier ein Beispiel:
Select Case Application.Caller
Case "Button1"
' Code für Button 1
Case "Button2"
' Code für Button 2
End Select
Makro für mehrere Buttons: Du kannst ein allgemeines Makro verwenden, das je nach gedrücktem Button unterschiedliche Operationen ausführt:
Sub ButtonMakro(ByVal welcherButton As Integer)
Select Case welcherButton
Case 1
' Aktion für Button 1
Case 2
' Aktion für Button 2
End Select
End Sub
Direkt mit Buttons arbeiten: Füge in die Klick-Ereignisse der Buttons folgendes ein:
Private Sub CommandButton1_Click()
Call ButtonMakro(1)
End Sub
Verwende activesheet.buttons(application.caller)
: Damit kannst Du die Buttons direkt ansprechen und ihre Position ermitteln.
Nutze Klassenmodule: Für komplexere Projekte kann es hilfreich sein, Klassenmodule zu verwenden, um die Logik zu kapseln und den Code übersichtlicher zu gestalten.
1. Wie kann ich die Position eines Buttons in Excel ermitteln?
Du kannst die Position eines Buttons mit ActiveSheet.Shapes(Application.Caller).TopLeftCell
abfragen, um die Zelladresse zu erhalten.
2. Kann ich mehrere Buttons mit einem einzigen Makro verwenden?
Ja, Du kannst ein Makro erstellen, das je nach gedrücktem Button unterschiedliche Aktionen ausführt, indem Du den Namen des Buttons über Application.Caller
abfragst.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen