Eckpunkte einer Schaltfläche

Zur Navigation springen Zur Suche springen

Dieses Programm liefert die Koordinaten der Eckzellen des angeklickten Buttons. Der Einfachheit halber ist alles in einem Unterprogramm notiert, ein besserer Programmierstil wäre es, den Code in ein Unterprogramm auszulagern, wobei der Übergabeparameter das Button-Objekt ist.

Es gibt zwei Methoden, die aktive Schaltfläche zu eruieren. Die eine liefert ein Shape-Objekt, die andere ein Active-X-Control Element.

Da die beiden Elementtypen unterschiedliche Eigenschaften haben, muss die Beschriftung der Schaltfläche je nach Lösungsmethode unterschiedlich ermittelt werden.
Private Sub cmd_Click()
  ' dieses Programm liefert die Koordinaten der Zellen, in denen sich der angeklickte Button befindet
  
  Dim R As Range, B As Range
  Dim myButtonName As String, myCapt As String, myButton
  Dim myMess As String
  
  On Error GoTo Hell
  
  myButtonName = "cmd" ' Name des angeklickten Buttons
  Set myButton = Me.Shapes(myButtonName)
  myCapt = myButton.OLEFormat.Object.Object.Caption
  
  ' Alternativvariante mit Namen direkt in der Referenz
  Set myButton = Me.cmd
  myCapt = myButton.Caption
  
  With myButton
    Set R = .TopLeftCell
    Set B = .BottomRightCell
  End With
  
  myMess = myMess & "Angeklickte Schaltfläche: " & myCapt & Chr(13) & Chr(10) & Chr(13) & Chr(10)
  myMess = myMess & "Adresse der Zelle links oben: " & R.Address & " Zeile: " & R.Row & " Spalte: " & R.Column & Chr(13) & Chr(10)
  myMess = myMess & "Adresse der Zelle rechts unten: " & B.Address & " Zeile: " & B.Row & " Spalte: " & B.Column
  
  MsgBox myMess
  Exit Sub
  
Hell:
  MsgBox "Fehler: " & Err.Number & " " & Err.Description
End Sub
Code mit mehreren Buttons und Unterprogramm
Private Sub cmd_Click()
  ButtonKoordinaten Me.cmd
End Sub

Private Sub CommandButton1_Click()
  ButtonKoordinaten Me.CommandButton1
End Sub

Public Sub ButtonKoordinaten(myButton)
  ' dieses Programm liefert die Koordinaten der Zellen, in denen sich der angeklickte Button befindet
  ' myButton ist die angeklickte Schaltfläche als Objekt
  
  Dim R As Range, B As Range, myCapt As String
  On Error GoTo Hell
  
  With myButton
    Set R = .TopLeftCell
    Set B = .BottomRightCell
    myCapt = .Caption
  End With
  
  myMess = myMess & "Angeklickte Schaltfläche: " & myCapt & Chr(13) & Chr(10) & Chr(13) & Chr(10)
  myMess = myMess & "Adresse der Zelle links oben: " & R.Address & " Zeile: " & R.Row & " Spalte: " & R.Column & Chr(13) & Chr(10)
  myMess = myMess & "Adresse der Zelle rechts unten: " & B.Address & " Zeile: " & B.Row & " Spalte: " & B.Column
  
  MsgBox myMess
  Exit Sub
  
Hell:
  MsgBox "Fehler: " & Err.Number & " " & Err.Description

End Sub