Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Name des angeklickten Labels (Bezeichnungsfeld) in Msgbox anzeigen

Mitglied: mreske

mreske (Level 1) - Jetzt verbinden

23.04.2019 um 23:55 Uhr, 367 Aufrufe, 13 Kommentare

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.
01.
Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
02.
Dim AktSteuerelement As Control
03.
Set AktSteuerelement = Screen.ActiveControl
04.
MsgBox AktSteuerelement.Name
05.
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ß
Mitglied: emeriks
24.04.2019 um 07:33 Uhr
Hi,
diese Ereignis-Prozedur wird direkt nur für dieses Control erstellt. Also kannst Du es da auch direkt ansprechen.

01.
Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
02.
  Dim AktSteuerelement As Control
03.
  Set AktSteuerelement = Bezeichnungsfeld18
04.
  MsgBox AktSteuerelement.Name
05.
End Sub
E.
Bitte warten ..
Mitglied: SlainteMhath
24.04.2019 um 08:59 Uhr
Moin,

hab den Code etwas optimiert
01.
Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
02.
  MsgBox Bezeichnungsfeld18.Name
03.
End Sub
lg,
Slainte
Bitte warten ..
Mitglied: 139374
24.04.2019, aktualisiert um 09:16 Uhr
Zitat von SlainteMhath:

Moin,

hab den Code etwas optimiert
01.
> Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
02.
>   MsgBox Bezeichnungsfeld18.Name
03.
> End Sub
04.
> 
Dann kannst du ja gleich
01.
MsgBox "Bezeichnungsfeld18"
schreiben. , oder wenn der Sender des Events automatisiert ermittelt werden soll gibt's noch
01.
Application.Caller
Im Event aufgerufen liefert das den Namen des Controls als String.

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..
Bitte warten ..
Mitglied: mreske
24.04.2019 um 21:51 Uhr
Hallo,
erst mal vielen Dank für die Antworten!

Ich möchte nicht für jedes Control manuell ein Ereignis-Feld erstellen.
Die Lösung mit Application.Caller wäre hier viel besser.

01.
Private Sub Bezeichnungsfeld18_DblClick(Cancel As Integer)
02.
MsgBox Application.Caller
03.
End Sub
Leider bekomme ich hier immer die Fehlermeldung:
Fehler beim Kompilieren. Methode oder Datenobjekt nicht gefunden.

Was mache ich falsch?

Danke und schönen Abend noch
Bitte warten ..
Mitglied: emeriks
25.04.2019 um 08:22 Uhr
Application.Caller bezieht sich nicht auf Controls sondern auf Elemente des Dokuments.
Bitte warten ..
Mitglied: 139374
LÖSUNG 25.04.2019, aktualisiert um 12:05 Uhr
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)
01.
Option Compare Database
02.
Dim lblControlCollection() As New lblEventClass
03.

04.
Private Sub Form_Load()
05.
 Dim c As control, cnt As Integer
06.
    cnt = 0
07.
    For Each c In Me.Controls
08.
        If c.ControlType = acLabel Then
09.
            cnt = cnt + 1
10.
            ReDim Preserve lblControlCollection(1 To cnt)
11.
            lblControlCollection(cnt).SetLabel c
12.
        End If
13.
    Next
14.
End Sub
Dann erstellst du im VBA-Editor ein neues Klassenmodul über Einfügen -> Klassenmodul, benennst die Klasse lblEventClass und fügst dort folgenden Code ein:
01.
Private WithEvents lbl As label
02.

03.
Private Sub lbl_Click()
04.
    MsgBox lbl.Name
05.
End Sub
06.

07.
Public Sub SetLabel(l As label)
08.
    Set lbl = l
09.
    lbl.OnClick = "[Event Procedure]"
10.
End Sub
Nun die Form schließen und neu öffnen, et voilà für jeden Label öffnet sich deine Messagebox ... single event procedure for multiple controls

Done. Ciao.
Bitte warten ..
Mitglied: mreske
25.04.2019 um 17:21 Uhr
Hallo timeout,

das ist haargenau das, was ich gesucht hatte.

Habe den Code und das Klassenmodul genauso, wie du es beschreibst, eingefügt,
und es klappt auf Anhieb.

Tausend Dank für die Hilfe!

Gruß und einen schönen Abend!
Bitte warten ..
Mitglied: 139374
25.04.2019 um 17:39 Uhr
Schön wenn's hilft. Ebenso schönen Abend.
Bitte warten ..
Mitglied: mreske
27.04.2019 um 13:38 Uhr
Hallo

die von timout beschriebene Lösung funktioniert aber nur bei ungebundenen Controls.

D.h, dass man die Bindung des Bezeichnungsfeldes erst aufheben muss, damit die Ereignisprozedur funktioniert.
Bindung aufheben:
Markieren des gebundenen Bezeichnungsfeldes
STRG+X
STRG+V

Gruß
Bitte warten ..
Mitglied: 139374
27.04.2019, aktualisiert um 13:56 Uhr
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.

screenshot - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: mreske
27.04.2019 um 14:51 Uhr
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?

z.B. in einer zweiten Msgbox den Formularnamen anzeigen?

Danke und Gruß
Bitte warten ..
Mitglied: 139374
27.04.2019, aktualisiert um 15:31 Uhr
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.
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.
Bitte warten ..
Mitglied: mreske
27.04.2019 um 17:59 Uhr
Hallo timeout,
vielen Dank für den Tipp mit der Parent-Property.

Ich habe jetzt lediglich das Klassenmodul so erweitert, dass folgendes passiert:
01. nach dem Klick auf ein Label öffnet sich das Formular "frm_LabelControl"
02. In einer Msgbox wird angezeigt: der Name des LABELS
03. Dieser Name wird dann übergeben an das Textfeld "txtLabelName"
04. In einer Msgbox wird angezeigt: der Name des FORMULARS
05. Der Formularname wird dann übergeben an das Textfeld "txtFormName"

01.
Private Sub lbl_Click()
02.
Dim MyControl As Object
03.
Dim MyParent As Object
04.
        
05.
Set MyControl = lbl
06.
Set MyParent = MyControl.Parent
07.

08.
 '01.  nach dem Klick auf ein Label öffnet sich das Formular "frm_LabelControl"
09.
DoCmd.OpenForm "frm_LabelControl"
10.

11.
'02. In einer Msgbox wird angezeigt: der Name des LABELS
12.
MsgBox lbl.Name
13.

14.
'03. Dieser Name wird dann übergeben an das Textfeld "txtLabelName"
15.
Forms!frm_LabelControl!txtLabelName = lbl.Name
16.

17.
'04.  In einer Msgbox wird angezeigt: der Name des FORMULARS
18.
MsgBox MyParent.Name
19.

20.
'05. Der Formularname wird dann übergeben an das Textfeld "txtFormName" 
21.
Forms!frm_LabelControl!txtFormName = MyParent.Name
22.

23.
End Sub
Besten Dank
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Bewegtes Label Visual Basic
gelöst Frage von Cougar77Visual Studio1 Kommentar

Guten Abend, ich versuche mich grade ein bisschen an VB. An sich würde ich gerne ein beliebiges Element (Label, ...

Microsoft
Label per Dateiaufruf drucken
gelöst Frage von michaelzMicrosoft3 Kommentare

Hallo zusammen! Ich möchte mit einem Brother QL-500 Etikettendrucker per Batch-Datei Ausdrucke tätigen. Mache ich im Explorer auf eine ...

Visual Studio
VB.Net - Label-Control skalieren
gelöst Frage von emeriksVisual Studio8 Kommentare

Hi, kann man im Visual Studion ein Label-Control skalieren? Bsp.: Ich habe eine verfügbare Fläche, welches vollständig durch ein ...

VB for Applications

MsgBox Druckeinrichtung mit VBA abschalten

gelöst Frage von Gimli3311VB for Applications8 Kommentare

Guten Tag Zusammen, durfte gestern ein altes Programm wieder rausholen und testen. Dabei habe ich jetzt folgendes Problem: Das ...

Neue Wissensbeiträge
Off Topic
Europawahl 2019 - Ein Statement der Jugend
Information von Frank vor 56 MinutenOff Topic2 Kommentare

Dies ist ein offener Brief. Ein Statement. Von einem großen Teil der Youtuber-Szene. Am Wochenende sind die EU-Wahlen und ...

Off Topic
Europawahl 2019
Information von Frank vor 1 TagOff Topic25 Kommentare

Vom 23. bis 26. Mai 2019 findet die Europawahl in den Mitgliedstaaten der Europäischen Union statt (ja auch in ...

Humor (lol)

Minister wollen offenbar Ausweispflicht für .de-Domain

Information von Kraemer vor 1 TagHumor (lol)7 Kommentare

Zitat von Golem.de: Die zuständigen Verbraucherschutzminister fordern einem Medienbericht zufolge offenbar eine Ausweispflicht für .de-Domains. Das soll Betrugsfälle mit ...

Off Topic
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 3 TagenOff Topic5 Kommentare

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Heiß diskutierte Inhalte
Ausbildung
Wie sind eure Erfahrungen als oder mit Ü30 Azubis für Fachinformatik Systemintegration?
Frage von CaptainProcessorAusbildung26 Kommentare

Tagchen allerseits :) Mir steht in wenigen Monaten eine Veränderung bevor, da mein AG seine IT auslagert und ich ...

Off Topic
Europawahl 2019
Information von FrankOff Topic24 Kommentare

Vom 23. bis 26. Mai 2019 findet die Europawahl in den Mitgliedstaaten der Europäischen Union statt (ja auch in ...

Router & Routing
ZyXEL ZyWALL USG 20 Routing
Frage von Oggy01Router & Routing12 Kommentare

Hallo, und wieder habe ich ein Problem mit dem Routing. Bis vor ein paar Tagen habe ich das mit ...

Virtualisierung
VServer (Linux): Absichern, verschlüsseln usw
Frage von mrserious73Virtualisierung11 Kommentare

Hallo zusammen, ich möchte einen Linux-Vserver mieten und diesen absichern. Darunter verstehe ich in diesem Falle hauptsächlich: Dafür sorgen, ...