Klick Ereignis dynamisch erstellen!

Blaubmania

Erfahrenes Mitglied
Also wie er seht blende unten blende ich die Felder und Buttons über eine Schleife ein und nun möchte ich damit ich nicht allen Buttons im vorfeld ein Klick Ereignis zuweisen muss und mir den Schreibkram erspare, auch gerne in der Schleife unterbringen das sie dem jeweiligen Button ein Klick Ereignis zuweist ow die werte dann übenommen werden und in ein anderes Formular eingetragen werden hab in der Access Hilfe auch was gefunden das so ungefähr so ausschaut:
Code:
If Form_Namensliste.Controls("btncheck" & i).OnClick = "" ThenForm_Namensliste.Controls("btncheck" & i).Onklick = "[Event Procedure]"

End If

So soweit ja ganz einleuchtend blos wo schreib ich denn nu hin das der die werte übernehmen soll etc. kommt bei anstelle [Event Procedure] nur der Funktionsname?!

Wäre sehr dankbar wenn mir wer dort weiter helfen kann.

Code:
Function tlsearch(schalter)
    Dim db As Database
    Dim r As Recordset
    Dim r2 As Recordset
    Dim i As Integer
 
    i = 1
 
    Set db = CurrentDb
    Set r = db.OpenRecordset("KartenNummer", dbOpenDynaset)
 
    If schalter = "tl" Then
        r.FindFirst "TL = True"
    Else
        r.FindFirst "Bearbeiter = True"
    End If
 
    If r.NoMatch = False Then
        Set r2 = db.OpenRecordset("Personal", dbOpenDynaset)
        Do Until r.NoMatch = True
            r2.FindFirst "PerNr =" & r![PerNr]
            Form_Namensliste.Controls("txtname" & i).Visible = True
            Form_Namensliste.Controls("txtgebaeude" & i).Visible = True
            Form_Namensliste.Controls("txtarbplatz" & i).Visible = True
            Form_Namensliste.Controls("btncheck" & i).Visible = True
            Form_Namensliste.Controls("txtname" & i) = r2![PerVorname] & " " & r2![PerName]
            Form_Namensliste.Controls("txtarbplatz" & i) = r2![PerArbPlatz]
            i = i + 1
            If schalter = "tl" Then
                r.FindNext "TL = True"
            Else
                r.FindNext "Bearbeiter = True"
            End If
        Loop
    End If
End Function
 
If Form_Namensliste.Controls("btncheck" & i).OnClick = ""
'Wenn beim Klick auf das Steuerelement "btncheck" & i kein Makro, keine Prozedur oder kein Ausdruck zugewiesen ist,
ThenForm_Namensliste.Controls("btncheck" & i).Onklick = "[Event Procedure]"
'Knüpfe die eine Ereignisprozedur ("[Event Procedure]") an das dazugehörige Steuerelement, damit das auch funktioniert.
End If

Wenn ich auf btncheck1 drücke, kann ich also nur das OnClick Ereignis von btncheck1 ändern in einen Ausdruck, ein Makro, oder VBA Code.

Wenn ich was übersehen hab, dürfen mich die Profis gern berichtigen... :)
 
Also ich habs jetzt hingekriegt blos läst der mich hierbei keine Variablen bzw. Werte mit übergeben.
Code:
            If schalter = "tl" Then
                Form_Namensliste.Controls("btncheck" & i).OnClick = "=auswahl(schalter,i)"
                r.FindNext "TL = True"
            Else
                Form_Namensliste.Controls("btncheck" & i).OnClick = "=auswahl(schalter,i)"
                r.FindNext "Bearbeiter = True"
            End If
 
Zuletzt bearbeitet:
Also ichhab es jetzt so gelöst

Code:
Option Compare Database
Public i As Integer
Public schalter2 As String
'Sucht die entsprechender Teamleiter und Bearbeiter aus der Tabelle "Kartennummer" und ermittelt
'dann die Daten des Mitarbeiters aus der Tabelle "Personal"
Function tlsearch(schalter)
    Dim db As Database
    Dim r As Recordset
    Dim r2 As Recordset
    i = 1
    schalter2 = schalter
    Set db = CurrentDb
    Set r = db.OpenRecordset("KartenNummer", dbOpenDynaset)
    
    If schalter = "tl" Then
        r.FindFirst "TL = True"
    Else
        r.FindFirst "Bearbeiter = True"
    End If
    
    If r.NoMatch = False Then
        Set r2 = db.OpenRecordset("Personal", dbOpenDynaset)
        Do Until r.NoMatch = True
            r2.FindFirst "PerNr =" & r![PerNr]
            Form_Namensliste.Controls("txtname" & i).Visible = True
            Form_Namensliste.Controls("txtgebaeude" & i).Visible = True
            Form_Namensliste.Controls("txtarbplatz" & i).Visible = True
            Form_Namensliste.Controls("btncheck" & i).Visible = True
            Form_Namensliste.Controls("btncheck" & i).OnClick = "=auswahl(" & i & ")"
            Form_Namensliste.Controls("txtname" & i) = r2![PerVorname] & " " & r2![PerName]
            Form_Namensliste.Controls("txtarbplatz" & i) = r2![PerArbPlatz]
            If schalter = "tl" Then
                r.FindNext "TL = True"
            Else
                r.FindNext "Bearbeiter = True"
            End If
            i = i + 1
        Loop
    End If
End Function
Function auswahl(i)
    If schalter2 = "tl" Then
        Form_AVS_Erstellung.txttl = Form_Namensliste.Controls("txtname" & i)
    Else
        Form_AVS_Erstellung.txtbearb = Form_Namensliste.Controls("txtname" & i)
    End If
    DoCmd.Close
    DoCmd.Maximize
End Function
 

Neue Beiträge

Zurück