Ermitteln, welches Label angeklickt wurd

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Kannst du nicht einfach ein Textfeld nehmen, es auf readonly setzen und den Hintergrund und den Rahmen transparent gestalten?

Die Eigenschaft "Beim Klicken" finde ich bei einem Label nicht in VBA von Excel 2010 jedenfalls.


PauleVBA 
Beitragsersteller
 10.10.2014, 14:41

Danke für den Tipp.

Aber 100 Label durch Textboxen ersetzen ist aufwendiger als 100 Klick-Ereignisse zu programmieren.

Ich habe halt schon beim Einstieg die falschen Objekte gewählt. Textboxes können mit ActiveControl.Name ermittelt werden.

Die Eigenschaft "Beim Klicken" für Labels existiert nicht auf dem Tabellenblatt, sondern nur im Userform. Und auch nur, wenn man dass Label dann doppelt anklickt geht der Editor auf und bietet das Klick-Ereignis an. Gilt auch für Excel 2010 und 2003

Das gilt für viele Objekte: Erst nach dem Anklicken kann man im Editor alle Ereignisse sehen, in den Eigenschaften fehlen manchmal welche

1

@Suboptimierer:

Aber ich habe ich jetzt die Lösung gefunden:

Das generelle Click-Ereignis für alle Labels ist jetzt eine Function:

Function Displayclicked(strCallingLabel As String)

     Me.Controls(strCallingLabel).ForeColor = clrRed
     Me.Controls(strCallingLabel).FontWeight = 600
     Me.Controls(strCallingLabel).ControlTipText = "Schon gewählt"
    'und so weiter
End Function    

Die Function rufe ich beim Click-Ereignis des einzelnen Labels auf und übergebe ihr den Namen des Labels

Damit ich das nicht manuell machen muss, habe ich eine einmalige Prozedur im Modul geschrieben:

Sub umbenennen()
Dim intRow As Integer
Dim intColumn As Integer
Dim strControlName As String

DoCmd.OpenForm "BingoTafel_Beamer", acDesign, , , acFormEdit, acWindowNormal
 
'jetzt Klickereignis füllen
For intRow = 1 To 10
    For intColumn = 1 To 10
        strControlName = "lblNumber" & Format(intRow, "00") & Format(intColumn, "00")
       Forms!BingoTafel_Beamer.Controls(strControlName).OnClick = "= DisplayMonth(" & Chr(34) & strControlName & Chr(34) & ")"
    Next
Next
    DoCmd.Close acForm, "BingoTafel_Beamer", acSaveYes
End Sub

Suboptimierer  13.10.2014, 15:21

Sehr elegante Lösung. Wenn ich könnte, würde ich dir den Stern geben. :)

0