Name des angeklickten Labels (Bezeichnungsfeld) in Msgbox anzeigen
Hallo,
ich habe in einem Access-Formular verschiedene ungebundene Bezeichnungsfelder (Labels).
Nun möchte ich mir per Doppelclick den Namen des Labels in einer Msgbox anzeigen lassen.
Bei dieser Prozedur wird mir aber immer nur der Name des aktiven Steuerelements (z.B. Textfeldes) angezeigt.
Ich möchte aber, dass mir "Bezeichnungsfeld18" in einer Msbox ausgegeben wird.
Hat jemand eine Idee, wie man das bewerkstelligen kann?
Alternativ würde mir auch reichen, wenn ich den Namen der gerade laufenden Prozedur (also Sub "Bezeichnungsfeld18") auslesen könnte.
Danke im Voraus
Gruß
ich habe in einem Access-Formular verschiedene ungebundene Bezeichnungsfelder (Labels).
Nun möchte ich mir per Doppelclick den Namen des Labels in einer Msgbox anzeigen lassen.
Bei dieser Prozedur wird mir aber immer nur der Name des aktiven Steuerelements (z.B. Textfeldes) angezeigt.
Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
Dim AktSteuerelement As Control
Set AktSteuerelement = Screen.ActiveControl
MsgBox AktSteuerelement.Name
End Sub
Ich möchte aber, dass mir "Bezeichnungsfeld18" in einer Msbox ausgegeben wird.
Hat jemand eine Idee, wie man das bewerkstelligen kann?
Alternativ würde mir auch reichen, wenn ich den Namen der gerade laufenden Prozedur (also Sub "Bezeichnungsfeld18") auslesen könnte.
Danke im Voraus
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 443587
Url: https://administrator.de/forum/name-des-angeklickten-labels-bezeichnungsfeld-in-msgbox-anzeigen-443587.html
Ausgedruckt am: 22.12.2024 um 18:12 Uhr
13 Kommentare
Neuester Kommentar
Zitat von @SlainteMhath:
Moin,
hab den Code etwas optimiert
Dann kannst du ja gleichMoin,
hab den Code etwas optimiert
> Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
> MsgBox Bezeichnungsfeld18.Name
> End Sub
>
MsgBox "Bezeichnungsfeld18"
Application.Caller
Wenn's hier um viele Labels geht würde ich das sowieso nicht manuell für jedes Control erstellen sondern für jeden Label über eine Klasse das Event daran binden dann braucht man das nicht manuell für jeden Label erstellen..
Fehler beim Kompilieren. Methode oder Datenobjekt nicht gefunden.
Ups, ist ja Access, dort geht das damit nicht.Ich möchte nicht für jedes Control manuell ein Ereignis-Feld erstellen.
Dann machst du jetzt folgendes (oder lädst die Beispiel-Datenbank hier runter: https://we.tl/t-sHBngw5fJU):In deiner Form wo die Label's liegen fügst du den nachstehenden Code ein
(In dem Beispiel werden alle Label-Controls mit der Event-Klasse verbunden, kannst du ja in der IF-Abfrage anpassen)
Option Compare Database
Dim lblControlCollection() As New lblEventClass
Private Sub Form_Load()
Dim c As control, cnt As Integer
cnt = 0
For Each c In Me.Controls
If c.ControlType = acLabel Then
cnt = cnt + 1
ReDim Preserve lblControlCollection(1 To cnt)
lblControlCollection(cnt).SetLabel c
End If
Next
End Sub
Einfügen -> Klassenmodul
, benennst die Klasse lblEventClass und fügst dort folgenden Code ein:Private WithEvents lbl As label
Private Sub lbl_Click()
MsgBox lbl.Name
End Sub
Public Sub SetLabel(l As label)
Set lbl = l
lbl.OnClick = "[Event Procedure]"
End Sub
Done. Ciao.
Schön wenn's hilft. Ebenso schönen Abend.
Zitat von @mreske:
die von timout beschriebene Lösung funktioniert aber nur bei ungebundenen Controls.
Klar, der Grund ist das die gebundenen Label ja keine Events haben, was man auch sieht wenn man die Eigenschaften des Labels aufruft.die von timout beschriebene Lösung funktioniert aber nur bei ungebundenen Controls.
Zitat von @mreske:
eine Frage hätte ich aber noch:
wie kann man der lblEventClass noch weitere Variablen (z.B. den Formularnamen, in dem sich das Label befindet) übergeben?
Entweder du deklarierst in der Klasse weitere Public Variables denen du dann den Wert in deiner Form zuweist, oder du machst es so wie ich es oben mit einer Public Function mit Parameter gemacht habe die den Parameter einer privaten Variable der Klasse zuweist.eine Frage hätte ich aber noch:
wie kann man der lblEventClass noch weitere Variablen (z.B. den Formularnamen, in dem sich das Label befindet) übergeben?
Alternativ kannst du natürlich auch über die Parent-Property des Labels abfragen in welcher Form das Control liegt und dich so zur Property hangeln.