Hallo,
ich würde es folgendermaßen lösen:
-
Erstelle eine neue Tabelle, in der die korrekten Angaben enthalten sind. (Es kann auch eine ganz andere Arbeitsmappe sein)
-
Ein Validierungs-Makro checkt die Angaben der Spalte BD und gibt bei Bedarf eine Warnung aus.
Validierungs-Makro:
Sub ValidateTische()
Dim shSource As Worksheet ' Enthält korrekt Angaben
Dim shDest As Worksheet ' Enthält zu prüfende Angaben
Dim rng As Range
Set shDest = ActiveWorkbook.Worksheets("Tabelle1")
Set shSource = ActiveWorkbook.Worksheets("Tabelle2")
For Each rng In Intersect(shDest.Range("BD:BD"), shDest.UsedRange)
If Not rng.Value = shSource.Range(rng.Address).Value Then
If rng.Row = 1 Then
rng.Worksheet.Activate
rng.Select
MsgBox "Spalte nicht vorhanden", vbCritical
Exit For
Else
rng.Value = shSource.Range(rng.Address).Value
End If
End If
Next
End Sub
Die Tabellennamen müssen bei Bedarf angepasst werden.
Falls die korrekten Angaben in einer anderen Arbeitsmappe sein sollten, muss der VBA-Code angepasst werden:
Sub ValidateTische()
Dim shSource As Worksheet ' Enthält korrekt Angaben
Dim shDest As Worksheet ' Enthält zu prüfende Angaben
Dim wbk As Workbook
Dim rng As Range
Set shDest = ActiveWorkbook.Worksheets("Tabelle1")
Set wbk = Application.Workbooks.Open(ActiveWorkbook.Path & "\KorrekteTische.xlsx")
Set shSource = wbk.Worksheets("Tabelle2")
For Each rng In Intersect(shDest.Range("BD:BD"), shDest.UsedRange)
If Not rng.Value = shSource.Range(rng.Address).Value Then
If rng.Row = 1 Then
rng.Worksheet.Activate
rng.Select
MsgBox "Spalte nicht vorhanden", vbCritical
Exit For
Else
rng.Value = shSource.Range(rng.Address).Value
End If
End If
Next
wbk.Close
End Sub
In diesem Fall wird vorausgesetzt, dass die Arbeitsmappe "KorrekteTische.xlsx" im gleichen Verzeichnis vorhanden ist, wie die zu prüfende Arbeitsmappe.
Falls weitere Spalten überprüft werden sollen, kann die vorhandene Routine ohne weiteres ergänzt werden.
LG, BigBen
|