AW: Wenn Spalte Wert enthält dann...
27.06.2022 13:44:01
UweD
Hallo
- Rechtsclick auf den Tabellenblattreiter von Tabelle3
- Code anzeigen
- Diesen Code rechts reinkopieren
Löst automatisch aus, bei Änderungen in C1
Private Sub Worksheet_Change(ByVal Target As Range)
Const APPNAME = "Worksheet_Change"
On Error GoTo Fehler
Dim LR As Integer, i As Integer, Z1 As Integer
Dim SpZ As Integer, Sp1 As Integer, SpN As Integer
Dim Tb1 As Worksheet, Tb2 As Worksheet, Monat As Integer, Zeile As Integer
If Not Intersect(Target, Range("C1")) Is Nothing Then
Monat = Range("C1")
SpZ = 17 'Zieldaten ab Q
Set Tb1 = Sheets("Tabelle1")
Set Tb2 = Sheets("Tabelle2")
Z1 = 4 'erste Datenzeile in Tab3
Sp1 = 7 'Quelldaten ab Spalte G
SpN = 5 'Namensspalte E in Tab 1+2
LR = Cells(Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte
For i = Z1 To LR
'prüfen ob Name in TB1 vorhanden
If WorksheetFunction.CountIf(Tb1.Columns(SpN), Cells(i, 1)) > 0 Then
'in welcher Zeile
Zeile = WorksheetFunction.Match(Cells(i, 1), Tb1.Columns(SpN), 0)
Application.EnableEvents = False
If Monat > 1 Then 'nur ab Monat 02
Cells(i, SpZ).Resize(1, Monat - 1).Value = Tb1.Cells(Zeile, Sp1).Resize(1, Monat - 1).Value
End If
Else
MsgBox Cells(i, 1) & ": in " & Tb1.Name & " nicht gefunden"
Exit Sub
End If
'prüfen ob Name in TB2 vorhanden
If WorksheetFunction.CountIf(Tb2.Columns(SpN), Cells(i, 1)) > 0 Then
'in welcher Zeile
Zeile = WorksheetFunction.Match(Cells(i, 1), Tb2.Columns(SpN), 0)
Application.EnableEvents = False
Cells(i, SpZ).Offset(0, Monat - 1).Resize(1, 13 - Monat).Value = _
Tb2.Cells(Zeile, Sp1).Offset(0, Monat - 1).Resize(1, 13 - Monat).Value
Else
MsgBox Cells(i, 1) & ": in " & Tb2.Name & " nicht gefunden"
Exit Sub
End If
Next
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD