AW: Inhalt einer Zelle anhand der Angabe inder Zelledavor füllen
15.12.2023 16:27:19
Yal
Hallo Simon,
ungefähr so:
Private Sub Worksheet_Change(ByVal Target As Range)
'nur reagieren, wenn eine nur eine Zelle geändert wurde
If Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
Select Case Target.Column
Case 4 'Beispiel: 4=Spalte D
If Target.Value > "" Then Target.Offset(0, 1) = Geburtstag_finden(Name:=Target.Value)
Case 5 'Beispiel: 5=Spalte E
If Target.Value > "" Then Target.Offset(0, -1) = Name_finden(Geburtstag:=Target.Value)
End Select
Application.EnableEvents = True
End Sub
Private Function Geburtstag_finden(Name As String) As Date
Dim Z As Range 'Z wie Zelle
On Error Resume Next
'Suche nach Namen in G2:G100
Set Z = Me.Range("G2:G100").Find(what:=Name, LookAt:=xlWhole)
If Not Z Is Nothing Then Geburtstag_finden = Z.Offset(0, 1).Value
End Function
Private Function Name_finden(Geburtstag As Date) As String
Dim Z As Range 'Z wie Zelle
On Error Resume Next
'Suche nach Geburtstage in H2:H100
Set Z = Me.Range("H2:H100").Find(what:=Name, LookAt:=xlWhole)
If Not Z Is Nothing Then Name_finden = Z.Offset(0, -1).Value
End Function
(nicht getestet)
Der Code muss in der Codepane des Blattes abgelegt werden: auf dem Reiter des Blattes rechtsklicken und "Code anzeigen" auswhählen. Dort den Code copy-pasten.
VG
Yal