ich habe nachstehendes Makro bei dem es zum Laufzeitfehler 6 Überlauf kommt. Die Ursache hierfür kann ich leider nicht finden. Deshalb benötige ich eure Hilfe.
Option Explicit
Sub Suchen()
Dim wb As Workbook
Dim wksH As Worksheet
Dim wksTB4 As Worksheet
Dim Startdatum As Date, EndDatum As Date
Dim wksWd As Worksheet
Dim Such1_lfd As Object 'benötigt für 1. Konto
Dim rng1_lfd As Range 'benötigt für 1. Konto
Dim KontoNrWert1_lfd As Object 'benötigt für 1. Konto
Dim KontoAnfDat1_lfd As Object 'benötigt für 1. Konto
Dim KontoEndDat1_lfd As Object 'benötigt für 1. Konto
Dim KontoArtWert1_lfd As Object 'benötigt für 1. Konto
Dim Such2_lfd As Object 'benötigt für 2. Konto
Dim rng2_lfd As Range 'benötigt für 2. Konto
Dim KontoNrWert2_lfd As Object 'benötigt für 2. Konto
Dim KontoAnfDat2_lfd As Object 'benötigt für 2. Konto
Dim KontoEndDat2_lfd As Object 'benötigt für 2. Konto
Dim KontoArtWert2_lfd As Object 'benötigt für 2. Konto
Dim Such3_lfd As Object 'benötigt für 3. Konto
Dim rng3_lfd As Range 'benötigt für 3. Konto
Dim KontoNrWert3_lfd As Object 'benötigt für 3. Konto
Dim KontoAnfDat3_lfd As Object 'benötigt für 3. Konto
Dim KontoEndDat3_lfd As Object 'benötigt für 3. Konto
Dim KontoArtWert3_lfd As Object 'benötigt für 3. Konto
Set wb = ThisWorkbook
Set wksH = wb.Worksheets("Hilfstabelle")
Set wksTB4 = wb.Worksheets("Kontodaten")
Set wksWd = wb.Worksheets("Worddaten")
'' TextBox1 = ""
'' TextBox2 = ""
'' If Worksheets("Hilfstabelle").Range("C3") > "" Then 'Kalenderjahr
'' With Worksheets("Hilfstabelle_SchulKalenderjahr")
'' If Me.ListBox1 > "" Then
'' TextBox1.Value = .Cells(ListBox1.ListIndex + 18, 5)
'' TextBox2.Value = .Cells(ListBox1.ListIndex + 18, 6)
'' End If
'' End With
'' ElseIf Worksheets("Hilfstabelle").Range("C2") > "" Then 'Schuljahr
'' With Worksheets("Hilfstabelle_SchulKalenderjahr")
'' If Me.ListBox1 > "" Then
'' TextBox1.Value = .Cells(ListBox1.ListIndex + 18, 8)
'' TextBox2.Value = .Cells(ListBox1.ListIndex + 18, 9)
'' End If
'' End With
'' End If
'' 'Anfang Zellen D18 - D23 in Worddaten mit ">" füllen
'' Worksheets("Worddaten").Range("D19").Value = ">"
'' Worksheets("Worddaten").Range("D21").Value = ">"
'' Worksheets("Worddaten").Range("D23").Value = ">"
'' Worksheets("Worddaten").Range("D25").Value = ">"
'' Worksheets("Worddaten").Range("D27").Value = ">"
'' Worksheets("Worddaten").Range("D29").Value = ">"
'' 'Ende Zellen D18 - D23 in Worddaten mit ">" füllen
'' 'Anfang Prüfung, ob Datum in Listbox1 gewählt wurde
'' If TextBox1 = "" And TextBox2 = "" Then
'' Label18.Caption = "Bitte in Listbox Datumwert auswählen!"
'' Exit Sub
'' Else
'' Startdatum = CDate(Me.TextBox1)
'' EndDatum = CDate(Me.TextBox2) 'wird nur hier benötigt
'' Label18.Caption = ""
'' End If
'' 'Ende Prüfung, ob Datum in Listbox1 gewählt wurde
Startdatum = CDate("01.01.2019")
'EndDatum = CDate("31.12.2100") 'wird nicht benötigt
wksTB4.Activate
Set Such1_lfd = wksH.Range("A2")
Set Such2_lfd = wksH.Range("A3")
Set Such3_lfd = wksH.Range("A4")
'Anfang Konto1 laufend und beendet
'funktioniert
'Anfang sucht 1. Konto laufend, wenn Anfangdatum grösser oder gleich Startdatum
For Each rng1_lfd In wksTB4.Range("B2:B" & Range("B65536").End(xlUp).Row)
If wksTB4.Cells(rng1_lfd.Row, 2) = Such1_lfd And _
wksTB4.Cells(rng1_lfd.Row, 8) >= (Startdatum) And _
wksTB4.Cells(rng1_lfd.Row, 9) = "" Then
If rng1_lfd = Such1_lfd Then
' MsgBox Sheets("Kontodaten").Cells(rng1_lfd.Row, 6)
' MsgBox Sheets("Kontodaten").Cells(rng1_lfd.Row, 8)
' MsgBox Sheets("Kontodaten").Cells(rng1_lfd.Row, 9)
Set KontoNrWert1_lfd = Sheets("Kontodaten").Cells(rng1_lfd.Row, 6)
Set KontoAnfDat1_lfd = Sheets("Kontodaten").Cells(rng1_lfd.Row, 8)
Set KontoEndDat1_lfd = Sheets("Kontodaten").Cells(rng1_lfd.Row, 9)
If KontoNrWert1_lfd And KontoAnfDat1_lfd >= Startdatum Then
If KontoNrWert1_lfd And KontoEndDat1_lfd = "" Then
If KontoEndDat1_lfd = "" Then
MsgBox "Konto1 laufend" & " " & KontoNrWert1_lfd
Worksheets("Worddaten").Range("D19").Value = KontoNrWert1_lfd
End If
End If
End If
End If
End If
Next rng1_lfd
'Ende sucht 1. Konto laufend, wenn Anfangdatum grösser oder gleich Startdatum
'funktioniert
'Anfang sucht 1. Konto laufend, wenn Anfangdatum kleiner Startdatum
For Each rng1_lfd In wksTB4.Range("B2:B" & Range("B65536").End(xlUp).Row)
If wksTB4.Cells(rng1_lfd.Row, 2) = Such1_lfd And _
wksTB4.Cells(rng1_lfd.Row, 8) = CDate("01.01. _
2019") And KontoEndDat1_lfd > "" Then
''' MsgBox "innerhalb" & " " & rng1_lfd & " " & KontoNrWert1_lfd
''' End If
If Such1_lfd = KontoArtWert1_lfd And KontoAnfDat1_lfd >= Startdatum And _
KontoEndDat1_lfd > "" Then
MsgBox "Konto1 beendet" & " " & rng1_lfd & " " & KontoNrWert1_lfd
Worksheets("Worddaten").Range("D25").Value = KontoNrWert1_lfd
End If
End If
Next rng1_lfd
'Ende sucht 1. Konto beendet grösser/gleich Anfangdatum
'Ende Konto1 laufend und beendet
Set KontoNrWert1_lfd = Nothing 'Sheets("Kontodaten").Cells(rng1_lfd.Row, 6)
Set KontoAnfDat1_lfd = Nothing 'Sheets("Kontodaten").Cells(rng1_lfd.Row, 8)
Set KontoEndDat1_lfd = Nothing 'Sheets("Kontodaten").Cells(rng1_lfd.Row, 9)
'Anfang Konto2 laufend und beendet
'funktioniert
'Anfang sucht 2. Konto laufend, wenn Anfangdatum grösser oder gleich Startdatum
For Each rng2_lfd In wksTB4.Range("B2:B" & Range("B65536").End(xlUp).Row)
If wksTB4.Cells(rng2_lfd.Row, 2) = Such2_lfd And _
wksTB4.Cells(rng2_lfd.Row, 8) >= (Startdatum) And _
wksTB4.Cells(rng2_lfd.Row, 9) = "" Then
If rng2_lfd = Such2_lfd Then
' MsgBox Sheets("Kontodaten").Cells(rng2_lfd.Row, 6)
' MsgBox Sheets("Kontodaten").Cells(rng2_lfd.Row, 8)
' MsgBox Sheets("Kontodaten").Cells(rng2_lfd.Row, 9)
Set KontoNrWert2_lfd = Sheets("Kontodaten").Cells(rng2_lfd.Row, 6)
Set KontoAnfDat2_lfd = Sheets("Kontodaten").Cells(rng2_lfd.Row, 8)
Set KontoEndDat2_lfd = Sheets("Kontodaten").Cells(rng2_lfd.Row, 9)
If KontoNrWert2_lfd And KontoAnfDat2_lfd >= Startdatum Then *hier Ü _
berlauf
If KontoNrWert2_lfd And KontoEndDat2_lfd = "" Then
If KontoEndDat2_lfd = "" Then
MsgBox "Konto2 laufend" & " " & KontoNrWert2_lfd
Worksheets("Worddaten").Range("D21").Value = KontoNrWert2_lfd
End If
End If
End If
End If
End If
Next rng2_lfd
'Ende sucht 1. Konto laufend, wenn Anfangdatum grösser oder gleich Startdatum
'funktioniert
'Anfang sucht 2. Konto laufend, wenn Anfangdatum kleiner Startdatum
For Each rng2_lfd In wksTB4.Range("B2:B" & Range("B65536").End(xlUp).Row)
If wksTB4.Cells(rng2_lfd.Row, 2) = Such2_lfd And _
wksTB4.Cells(rng2_lfd.Row, 8) = CDate("01.01. _
2019") And KontoEndDat2_lfd > "" Then
''' MsgBox "innerhalb" & " " & rng2_lfd & " " & KontoNrWert2_lfd
''' End If
If Such2_lfd = KontoArtWert2_lfd And KontoAnfDat2_lfd >= Startdatum And _
KontoEndDat2_lfd > "" Then
MsgBox "Konto2 beendet" & " " & rng2_lfd & " " & KontoNrWert2_lfd
Worksheets("Worddaten").Range("D27").Value = KontoNrWert2_lfd
End If
End If
Next rng2_lfd
'Ende sucht 2. Konto beendet grösser/gleich Anfangdatum
'Ende Konto2 laufend und beendet
'Anfang Konto3 laufend und beendet
'funktioniert
'Anfang sucht 3. Konto laufend, wenn Anfangdatum grösser oder gleich Startdatum
For Each rng3_lfd In wksTB4.Range("B2:B" & Range("B65536").End(xlUp).Row)
If wksTB4.Cells(rng3_lfd.Row, 2) = Such3_lfd And _
wksTB4.Cells(rng3_lfd.Row, 8) >= (Startdatum) And _
wksTB4.Cells(rng3_lfd.Row, 9) = "" Then
If rng3_lfd = Such3_lfd Then
' MsgBox Sheets("Kontodaten").Cells(rng3_lfd.Row, 6)
' MsgBox Sheets("Kontodaten").Cells(rng3_lfd.Row, 8)
' MsgBox Sheets("Kontodaten").Cells(rng3_lfd.Row, 9)
Set KontoNrWert3_lfd = Sheets("Kontodaten").Cells(rng3_lfd.Row, 6)
Set KontoAnfDat3_lfd = Sheets("Kontodaten").Cells(rng3_lfd.Row, 8)
Set KontoEndDat3_lfd = Sheets("Kontodaten").Cells(rng3_lfd.Row, 9)
If KontoNrWert3_lfd And KontoAnfDat3_lfd >= Startdatum Then
If KontoNrWert3_lfd And KontoEndDat3_lfd = "" Then
If KontoEndDat3_lfd = "" Then
MsgBox "Konto3 laufend" & " " & KontoNrWert3_lfd
Worksheets("Worddaten").Range("D23").Value = KontoNrWert3_lfd
End If
End If
End If
End If
End If
Next rng3_lfd
'Ende sucht 1. Konto laufend, wenn Anfangdatum grösser oder gleich Startdatum
'funktioniert
'Anfang sucht 3. Konto laufend, wenn Anfangdatum kleiner Startdatum
For Each rng3_lfd In wksTB4.Range("B2:B" & Range("B65536").End(xlUp).Row)
If wksTB4.Cells(rng3_lfd.Row, 2) = Such3_lfd And _
wksTB4.Cells(rng3_lfd.Row, 8) = Startdatum And _
KontoEndDat3_lfd > "" Then
'MsgBox "Konto3 beendet" & " " & rng31_lfd & " " & KontoNrWert3_lfd
Worksheets("Worddaten").Range("D29").Value = KontoNrWert3_lfd
End If
End If
Next rng3_lfd
'Ende sucht 3. Konto beendet grösser/gleich Anfangdatum
'Ende Konto3 laufend und beendet
Worksheets("Worddaten").Activate
'Anfang Prüfung, ob die Zellen D18 - D23 in Worddaten leer sind
If Worksheets("Worddaten").Range("D19").Value = "" Then
Worksheets("Worddaten").Range("D19").Value = ">"
End If
If Worksheets("Worddaten").Range("D21").Value = "" Then
Worksheets("Worddaten").Range("D21").Value = ">"
End If
If Worksheets("Worddaten").Range("D23").Value = "" Then
Worksheets("Worddaten").Range("D23").Value = ">"
End If
If Worksheets("Worddaten").Range("D25").Value = "" Then
Worksheets("Worddaten").Range("D25").Value = ">"
End If
If Worksheets("Worddaten").Range("D27").Value = "" Then
Worksheets("Worddaten").Range("D27").Value = ">"
End If
If Worksheets("Worddaten").Range("D29").Value = "" Then
Worksheets("Worddaten").Range("D29").Value = ">"
End If
'Ende Prüfung, ob die Zellen D18 - D23 in Worddaten leer sind
End Sub
In dieser Zeile "If KontoNrWert2_lfd And KontoAnfDat2_lfd >= Startdatum Then" erfolgt der Überlauf, ebenso in der Zeile "If KontoNrWert3_lfd And KontoAnfDat3_lfd >= Startdatum Then".Könnt ihr mir bitte helfen und sagen warum hier ein Überlauf erfolgt.
Gruss
Peter