Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 6 in einer Schleife

Laufzeitfehler 6 in einer Schleife
22.07.2019 13:28:54
Matze
Hallo zusammen,
ich bin relativer Anfänger in der VBA Programmierung.
Ich habe einen Kollegen der in Java ziemlich versiert ist, aber anhand der Syntax von VBA jetzt auch verzweifelt.
Ich habe Insgesamt 3 Dateien mit welchen ich arbeite.
1: "Basis", 2: "TE", 3: "RG"
Aus der 2. Datei wird vorher eine Pivot erstellt und gefiltert, in der für diesen Monat nötige HV-Nummern stehen. Diese werden kopiert in die Datei 3 eingefügt. Zum Abschluss soll aus Datei 1 (in welcher Vor- & Nachname stehen) die HV-Nr. abgeglichen werden und wenn diese Übereinstimmen, der Vor- und Nachname in Datei 3 übernommen werden.
Anhand des mit meinem Kollegen erstellten Code klappt es ansatzweise, er hat dann aber nach wenigen Datensätzen einen Laufzeitfehler und sagt er habe einen Überlauf.
Ich gehe davon aus, dass es ein Problem mit der HV-Nr. gibt, welche er nicht findet, aber in allen 3 Dateien ersichtlich ist.
Kann mir evtl. geholfen werden?

'5) Datenübernahme
Dim BasisQuelle As Workbook, TEQuelle As Workbook, RGQuelle As Workbook
Dim BasisSheet As Worksheet, TESheet As Worksheet, RGSheet As Worksheet
Set BasisQuelle = Workbooks("Basis.xlsx")
Set TEQuelle = Workbooks("SLSBasisTE.xls")
Set RGQuelle = Workbooks("Rechnungserstellung_SLS.xlsx")
Set BasisSheet = BasisQuelle.Sheets("Tabelle1")
Set TESheet = TEQuelle.Sheets("Tabelle2")
Set RGSheet = RGQuelle.Sheets("Anlage")
Dim TEBereich As Range, BasisBereich As Range, RGBereich As Range
Dim TERow As Long, BasisRow As Long, RGRow As Long
With BasisSheet
Set BasisBereich = .Range("B2:B" & .Cells(.Rows.Count, 2).End(xlUp).Row)
BasisRow = BasisBereich.Rows.Count
End With
With TESheet
Set TEBereich = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
TERow = TEBereich.Rows.Count
End With
With RGSheet
Set RGBereich = .Range("A2:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
RGRow = RGBereich.Rows.Count
End With
Dim monat(12) As String
monat(0) = "Januar"
monat(1) = "Februar"
monat(2) = "März"
monat(3) = "April"
monat(4) = "Mai"
monat(5) = "Juni"
monat(6) = "Juli"
monat(7) = "August"
monat(8) = "September"
monat(9) = "Oktober"
monat(10) = "November"
monat(11) = "Dezember"
Dim index_basis As Integer, index_rg As Integer
index_basis = 1
index_rg = 1
Dim a As Integer 'TEBereich
For a = 4 To TESheet.Cells(Rows.Count, 1).End(xlUp).Row
Dim hv_nummer As String
Dim te_nummer As String
hv_nummer = TESheet.Cells(a, 1).Value
te_nummer = TESheet.Cells(a, 2).Value
Dim vorname As String, nachname As String, VertragsBeginn As String
Dim Kuendigung As String, KostenloserMonat As String, AbweichenderZahler As String
Dim SachKonto As String, KostenStelle As String, PreisDatensatz As String, Service As  _
String
Dim index_basis_finished As Boolean, index_rg_finished As Boolean
index_basis_finished = False
index_rg_finished = False
Do Until index_basis_finished And index_rg_finished
If Not index_basis_finished And BasisSheet.Cells(index_basis, 2).Value = hv_nummer  _
Then
index_basis_finished = True
End If
If Not index_rg_finished And RGSheet.Cells(index_rg, 1).Value = hv_nummer Then
' bezieht sich auf rg tabelle, schreibt datenfelder
index_rg_finished = True
End If
If index_basis_finished And index_rg_finished Then
nachname = BasisSheet.Cells(index_basis, 3).Value
vorname = BasisSheet.Cells(index_basis, 4).Value
Dim anzahl As Integer
Dim preis As Integer
' Einfügeposition ermittelt in der RG-Datei, daten werden eingefügt
RGSheet.Cells(index_rg, 2).Value = nachname
RGSheet.Cells(index_rg, 3).Value = vorname
'Errechnet den entsprechenden Preis
anzahl = RGSheet.Cells(index_rg, 9).Value
preis = RGSheet.Cells(index_rg, 13).Value
RGSheet.Cells(index_rg, 9).Value = te_nummer
RGSheet.Cells(index_rg, 14).Value = anzahl * preis
End If
' Abbruchbedingungen für Einzeldurchläufe und gesamten loop
If Not index_basis_finished Then
index_basis = index_basis + 1
ElseIf Not index_rg_finished Then
index_rg = index_rg + 1
End If
Loop
' Monats- und Jahresbeschreibung ermitteln und eintragen
Dim thisDate As Date
thisDate = Now
If (Month(thisDate) = 1) Then
RGSheet.Cells(index_rg, 12).Value = "Telefonie " & monat((12 + Month( _
thisDate) - 2) Mod 12) & " " & (Year(thisDate) - 1)
Else: RGSheet.Cells(index_rg, 12).Value = "Telefonie " & monat(Month(thisDate) - _
2) & " " & Year(thisDate)
End If
Next

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 6 in einer Schleife
22.07.2019 13:45:43
Daniel
Hi
der Laufzeitfehler 6 tritt auf, wenn bei der Deklaration einer Variablen einen zu kleinen Wertebereich gewählt hat.
dh wenn du deklarierst: dim x as Integer
dann ist die größtmögliche zuweisbare Zahl: 32767 (2^15-1)
können größere Zahlen vorkommen, muss man Long verwenden: dim x as Long
dann reicht der Zahlenraum bis 2^31-1
werden die Zahlen noch größer, dann Double.
aber du solltest mal die Zeile kennzeichnen, in welcher der Fehler auftritt und angeben, welche werte die verwendeten Variablen haben.
Gruß Daniel
AW: Laufzeitfehler 6 in einer Schleife
22.07.2019 14:17:13
Matze
Hallo Daniel,
vielen Dank für die Schnelle Antwort :-)
Du hast auf denke ich den richtigen Ansatz.
Die HV-Nr. können maximal 8-Stellig sein.
Wenn ich es als Integer deklariere

Dim index_basis As Integer, index_rg As Integer
index_basis = 1
index_rg = 1
kommt der Fehler in der Abbruchbedingung bei index_basis

' Abbruchbedingungen für Einzeldurchläufe und gesamten loop
If Not index_basis_finished Then
index_basis = index_basis + 1
ElseIf Not index_rg_finished Then
index_rg = index_rg + 1
End If
Loop
wenn ich es auf long oder double ändere kommt der Fehler in diesem Bereich if not...

Do Until index_basis_finished And index_rg_finished
If Not index_basis_finished And BasisSheet.Cells(index_basis, 2).Value = hv_nummer  _
Then
index_basis_finished = True
End If

Anzeige
AW: Laufzeitfehler 6 in einer Schleife
22.07.2019 14:28:07
Matze
Ergänzung:
wenn ich es auf long oder double ändere kommt der Fehler in diesem Bereich if not...
Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler

Do Until index_basis_finished And index_rg_finished
If Not index_basis_finished And BasisSheet.Cells(index_basis, 2).Value = hv_nummer   _
_
Then
index_basis_finished = True
End If

AW: Laufzeitfehler 6 in einer Schleife
22.07.2019 14:49:13
Matze
Hat sich erledigt.
Es hatte wirklich nur mit dem Integer zu tun.
Nach Rücksprache mit einem Kollegen, war eine Anweisung zu viel eingefügt, welche dafür gesorgt hatte, dass einige HV-Nr. nicht angezeigt wurden.
Nochmal ein großes Danke an Dich Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige