For Each rngZelle In rngSpalte
strBuchungstext = rngZelle.Value
On Error Resume Next
If IsError(tblKontenzuordnung.Range("A:A").Find(strBuchungstext).Offset(0, 1).Value) Then
intFehlenderBuchungstextZaehler = intFehlenderBuchungstextZaehler + 1
strAryFehlenderBuchungstext(intFehlenderBuchungstextZaehler) = rngZelle.Value
On Error GoTo 0
End If
Next rngZelleFor i = 1 To intFehlenderBuchungstextZaehler
strAuflistungBuchungstexte = strAuflistungBuchungstexte & strAryFehlenderBuchungstext(i) & vbCrLf
Next iOption Explicit
Sub PruefenBuchungstexte()
Dim rngDaten As Range, rngSpalte As Range, rngZelle As Range
Dim strBuchungstext As String, strKontoNeu As String
Dim strAuflistungBuchungstexte As String
Dim strAryFehlenderBuchungstext(10000) As String
Dim intFehlenderBuchungstextZaehler As Integer
Dim intLetzteZeile As Integer, i As Integer
Set rngSpalte = tblBuchungen.Range("F2:F" & tblBuchungen.UsedRange.Rows.Count)
For Each rngZelle In rngSpalte
strBuchungstext = rngZelle.Value
On Error Resume Next
If IsError(tblKontenzuordnung.Range("A:A").Find(strBuchungstext).Offset(0, 1).Value) Then
intFehlenderBuchungstextZaehler = intFehlenderBuchungstextZaehler + 1
strAryFehlenderBuchungstext(intFehlenderBuchungstextZaehler) = rngZelle.Value
On Error GoTo 0
End If
Next rngZelle
'#####################
'Bis hier ist das Array mit den Duplikaten gefüllt. Diese sollen vor dem nächsten Schritt innerhalb des Arrays gelöscht werde
'#####################
If intFehlenderBuchungstextZaehler > 0 Then
For i = 1 To intFehlenderBuchungstextZaehler
strAuflistungBuchungstexte = strAuflistungBuchungstexte & strAryFehlenderBuchungstext(i) & vbCrLf
Next i
If MsgBox("Die folgenden " & intFehlenderBuchungstextZaehler & " Buchungstexte fehlen in der Kontenzuordnung:" & vbCrLf & vbCrLf & _
strAuflistungBuchungstexte & vbCrLf & _
"Sollen die Buchungstexte in die Kontenzuordnung eingetragen werden?", _
vbExclamation + vbYesNo, p_cstrAppName & " " & p_cstrAppVersion) = vbYes Then
intLetzteZeile = tblKontenzuordnung.UsedRange.Rows.Count
For i = 1 To intFehlenderBuchungstextZaehler
tblKontenzuordnung.Cells(intLetzteZeile + i, 1).Value = strAryFehlenderBuchungstext(i)
Next i
MsgBox "Die Buchungstexte wurden in der Kontenzuordnung eingetragen. Bitte erfassen Sie die zugehörigen Buchungskonten.", vbInformation, p_cstrAppName & " " & p_cstrAppVersion
tblKontenzuordnung.Activate
End If
End If
End Sub
Next ohne For
If MsgBox("Die folgenden " & intFehlenderBuchungstextZaehler & ...wird nicht (richtig) abgeschlossen.
Sub PartyCodesPruefen()
Dim rngDaten As Range, rngSpalte As Range, rngZelle As Range
Dim strPartyCode As String, strKontoNeu As String
Dim strAuflistungPartyCodes As String
Dim strAryFehlenderPartyCode(10000, 1) As String
Dim intFehlenderPartyCodeZaehler As Integer
Dim intLetzteZeile As Integer, i As Integer
p_intFehlerPartyCodes = 0
If tblBuchungen.UsedRange.Rows.Count = 1 Then
Exit Sub
Else
Set rngSpalte = tblBuchungen.Range("C2:C" & tblBuchungen.UsedRange.Rows.Count)
End If
For Each rngZelle In rngSpalte
strPartyCode = rngZelle.Value
On Error Resume Next
If IsError(tblKreditorenzuordnung.Range("A:A").Find(strPartyCode).Offset(0, 1).Value) Then
intFehlenderPartyCodeZaehler = intFehlenderPartyCodeZaehler + 1
strAryFehlenderPartyCode(intFehlenderPartyCodeZaehler, 0) = rngZelle.Value
strAryFehlenderPartyCode(intFehlenderPartyCodeZaehler, 1) = rngZelle.Offset(0, 1).Value
On Error GoTo 0 'Wenn Fehler erzeugt wieder normal fortfahren
End If
Next rngZelle
If intFehlenderPartyCodeZaehler > 0 Then
For i = 1 To intFehlenderPartyCodeZaehler
strAuflistungPartyCodes = strAuflistungPartyCodes & strAryFehlenderPartyCode(i, 0) & _
vbTab & vbTab & strAryFehlenderPartyCode(i, 1) & vbCrLf
Next i
If MsgBox("Die folgenden " & intFehlenderPartyCodeZaehler & " Party Codes fehlen in der Kreditorenzuordnung:" & vbCrLf & vbCrLf & _
strAuflistungPartyCodes & vbCrLf & _
"Sollen die PartyCodes in die Kreditorenzuordnung eingetragen werden?", _
vbExclamation + vbYesNo, p_cstrAppName & " " & p_cstrAppVersion) = vbYes Then
intLetzteZeile = tblKreditorenzuordnung.UsedRange.Rows.Count
For i = 1 To intFehlenderPartyCodeZaehler
tblKreditorenzuordnung.Cells(intLetzteZeile + i, 1).Value = strAryFehlenderPartyCode(i, 0)
tblKreditorenzuordnung.Cells(intLetzteZeile + i, 2).Value = strAryFehlenderPartyCode(i, 1)
Next i
MsgBox "Die PartyCodes wurden in der Kreditorenzuordnung eingetragen. Bitte erfassen Sie die zugehörigen Kreditoren.", vbInformation, p_cstrAppName & " " & p_cstrAppVersion
tblKreditorenzuordnung.Activate
End If
p_intFehlerPartyCodes = 1
Else
MsgBox "Es sind alle Partycodes in der Kreditorenzuordnung erfasst.", vbInformation, p_cstrAppName & " " & p_cstrAppVersion
End If
End Sub
strTempGegenkonto = objDaten("Key=" & rngZelle.Value)Sub GegenkontenPruefen()
Dim rngDaten As Range, rngSpalte As Range, rngZelle As Range
Dim i As Integer
Dim strAuflistungBuchungstexteOhneGegenkonto As String
Dim strAryBuchungstextOhneGegenkonto(1000) As String
Dim intFehlendesgegenkontoZaehler As Integer
Dim strTempGegenkonto As String
Dim objDaten As Collection
Set rngSpalte = tblKontenzuordnung.Range("A2:A" & tblKontenzuordnung.UsedRange.Rows.Count)
Set objDaten = New Collection
For Each rngZelle In rngSpalte
If rngZelle.Offset(0, 1).Value = "" Then
strTempGegenkonto = ""
strTempGegenkonto = objDaten("Key=" & rngZelle.Value)
If Len(strTempGegenkonto) < 1 Then
intFehlendesgegenkontoZaehler = intFehlendesgegenkontoZaehler + 1
strAryBuchungstextOhneGegenkonto(intFehlendesgegenkontoZaehler) = rngZelle.Value
objDaten.Add CStr(intFehlendesgegenkontoZaehler), "Key=" & rngZelle.Value
On Error GoTo 0 'Wenn Fehler erzeugt wieder normal fortfahren
End If
End If
Next rngZelle
If intFehlendesgegenkontoZaehler > 0 Then
For i = 1 To intFehlendesgegenkontoZaehler
strAuflistungBuchungstexteOhneGegenkonto = strAuflistungBuchungstexteOhneGegenkonto & strAryBuchungstextOhneGegenkonto(i) & vbCrLf
Next i
MsgBox "Zu den folgenden Buchungstexten sind keine Gegenkonten erfasst:" & vbCrLf & vbCrLf & _
strAuflistungBuchungstexteOhneGegenkonto & vbCrLf & _
"Bitte erfassen Sie die Gegenkonten!", _
vbExclamation, p_cstrAppName & " " & p_cstrAppVersion
p_intFehlerGegenkonten = 1
Else
MsgBox "Es ist zu jedem Buchungstext ein Gegenkonten in der Kontenzuordnung erfasst.", vbInformation, p_cstrAppName & " " & p_cstrAppVersion
End If
End Sub