Leider muss ich dir sagen, dass ich nicht verstehe wo das Problem liegt. Der Programmablaufplan ist bestenfalls unvollständig (und damit nicht zu gebrauchen/falsch).
Du willst etwas einfaches? Einfacher als das Folgende, geht nicht:
Hier wird exemplares mit eindimensionalen Arrays gearbeitet. Der Code sollte selbsterklärend sein.
Option Explicit
Sub Suche1()
Dim vntMeldungsnummern As Variant
Dim vntDatenexport As Variant
'Meldungsnummern in der Dokumentation
vntMeldungsnummern = Array(12, 34)
'Meldungsnummern im Datenexport
vntDatenexport = Array(34, 56, 78, 12)
Dim blnFound As Boolean
Dim i As Long
Dim j As Long
For i = LBound(vntDatenexport) To UBound(vntDatenexport)
blnFound = False
For j = LBound(vntMeldungsnummern) To UBound(vntMeldungsnummern)
If vntMeldungsnummern(j) = vntDatenexport(i) Then
blnFound = True
Exit For
End If
Next
If blnFound Then
Debug.Print "Meldungsnummer '" & vntDatenexport(i) & "' existiert bereits in der Dokumentation"
Else
Debug.Print "Meldungsnummer '" & vntDatenexport(i) & "' fehlt in der Dokumentation"
End If
Next
End Sub
Das gleiche geht natürlich auch direkt mit Daten von einem Tabellenblatt. Diese spricht man über ein Range-Objekt an.
Auf dem Tabellenblatt "Dokumentation" steht in D1 := 12 und in D2 := 34.
Auf dem Tabellenblatt "Datenexport (1)" steht in A1 := 34, in A2 := 56, in A3 := 78 und A4 := 12.
Auch dieser Code sollte selbsterklärend sein und ist identisch zu dem von oben.
Public Sub Suche2()
Dim rngDokumentation As Excel.Range
Dim rngDatenexport As Excel.Range
'Meldungsnummern in der Dokumentation
With Worksheets("Dokumentation")
Set rngDokumentation = .Range("D1", .Cells(.Rows.Count, "D").End(xlUp))
End With
'Meldungsnummern im Datenexport
With Worksheets("Datenexport (1)")
Set rngDatenexport = .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
End With
Dim rngDatenexportNr As Excel.Range
Dim rngDokumentationNr As Excel.Range
For Each rngDatenexportNr In rngDatenexport.Cells
Set rngDokumentationNr = rngDokumentation.Find( _
What:=rngDatenexportNr.Value, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
MatchCase:=False)
If Not rngDokumentationNr Is Nothing Then
Debug.Print "Meldungsnummer '" & rngDatenexportNr.Value & "' existiert bereits in der Dokumentation"
Else
Debug.Print "Meldungsnummer '" & rngDatenexportNr.Value & "' fehlt in der Dokumentation"
End If
Next
End Sub
Das der Tabellenblattname des Datenexports unterschiedlich lauten kann, ist uns in diesem Beispiel egal. Es geht ums allgemeine Prinzip.
Grüße
|