Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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 9 Excel seit Office update 2010 zu 2016

Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 11:41:37
sanane3443
Wenn ich bei Page1 den Button Protokoll betätige soll eigentlich ein Protokoll mit Word erstellt werden und ein weiteres Arbeitsblatt bei excel erstellt werden. Jedoch erscheint sobald ich den Button klicke die Fehlermeldung Laufzeitfehler 9 und es wird diese Zeile (fett hervorgehoben) gelb markiert. Ich habe schon alles mögliche probiert aber komme nicht zum Ziel kann mir da jemand vielleicht sagen woran das liegt.

Sub FiberCollect()

Dim NumRows As Long 'letzte celle
Dim Counter As Long, i As Long, actualtube As Long, lasttube As Long, StartRow As Long, EndRow As Long, DestinationRow As Long
Dim SheetNumber As Long

Worksheets("Überblicksblatt").Activate

SheetNumber = 0
lasttube = 0
DestinationRow = 20

NumRows = 1
NumRows = ThisWorkbook.Sheets("Überblicksblatt").Range("A2", Range("A2").End(xlDown)).Rows.count

If NumRows > 65536 - 5 Then
NumRows = 1
End If

For Counter = 1 To NumRows

If IsNumeric(ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Offset(, -2).value) Then

actualtube = ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Offset(, -2).value

Else

actualtube = ColourSelect(ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Offset(, -2).text)

End If

If lasttube = actualtube Then
'copy first row last row
StartRow = ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Row
EndRow = ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").End(xlDown).Row
If EndRow = ThisWorkbook.Sheets(Counter).Range("ParamTableOrigin").Row Then
EndRow = StartRow
End If

For i = StartRow To EndRow
'ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets("Überblicksblatt").Cells(DestinationRow - StartRow + 1 + i, 1)
ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets(SheetNumber).Cells(DestinationRow - StartRow + 1 + i, 1)
Next i

StartRow = 0
EndRow = 0

ThisWorkbook.Sheets("Überblicksblatt").Cells(1 + Counter, 2).value = ""

Else
StartRow = ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Row
EndRow = ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").End(xlDown).Row
If EndRow > ThisWorkbook.Sheets(Counter).Range("ParamTableOrigin").Row Then
EndRow = StartRow
End If

DestinationRow = EndRow
SheetNumber = Counter
End If

lasttube = actualtube

Next Counter

End Sub

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 11:52:13
RPP63
Moin!
Ich sehe nichts fettes (außer meiner Hühnersuppe).
Kopiere die Meckerzeile doch noch einmal separat.

Gruß Ralf
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 12:03:55
Piet
Hallo

amüsant, heisse Kiste. Schau dir deinen Code bitte noch mal genau an. Wo deklarierst du DestinationRow??
Du deklarierst nach dem Copy Befehl, und zwar zusammen mit dieser Zeile.
DestinationRow = EndRow
SheetNumber = Counter

Ersetze DestinationRow durch EndRow! Was ist mit SheetNumber?? Habe ich jetzt nicht geprüft.

mfg Piet
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
22.03.2024 18:41:38
Piet
Hallo

wenn der Code vorher auf Win7 gelaufen hat, jetzt aber nicht mehr, macht es m.E. wenig Sinn herauszufinden woran das liegt.

Einfacher dürfte es sein, du lädst uns eine Beispieldatei hoch, was der Code früher gemacht hat, und wir schauen mal wie man den Code ändern muss, um ihn mit der neuen Version ans laufen zu bringen. Was da aber genau von wo nach wo kopiert werden soll habe ich noch nicht so ganz verstanden. Bei einer Beispieldatei mit Lösung von Hand können wird das schneller nachvollziehen.

mfg Piet
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
22.03.2024 19:17:34
schauan
... Da hat irgendwann irgendwer den Code mit dem Blattnamen auskommentiert und lässt dafür den mit sheetnumber laufen. Mal abgesehen von eventuellen anderen Mängeln funktioniert der code spätestens seitdem nicht mehr, unabhängig von irgendwelchen Versionsänderungen...
Zuweilen ist es nicht verkehrt, Änderungen zu protokollieren.
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 12:18:34
sanane3443
Also EndRow = EndRow?
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 13:54:06
Oppawinni
NEIN, aber du hast am Anfang ein
SheetNumber = 0
lasttube = 0
DestinationRow = 20
und da sollte zumindest, IMHO, eben
SheetNumber = 1
stehen, da es so aussieht, als würde SheetNumber vor der ersten Benutzung nicht verändert,
was bedeuten würde, dass du auf .Sheets(0) zugreifst, was aber zum einem Fehler führen sollte.
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 14:02:43
Oppawinni
Es könnte vielleicht auch sein, daß das bewußt so gemacht ist, dann könntest du vielleicht mal testen,
was passiert, wenn du am Anfang
SheetNumber = 0
bestehen lässt.
Dafür aber nur den unterdrückst

               For i = StartRow To EndRow

on error resume next
ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets(SheetNumber).Cells(DestinationRow - StartRow + 1 + i, 1)
on error goto 0
Next i
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 14:22:52
Oppawinni
ActualTube ist 0,
da hängt vermutlich das Ganze Problem. Das bedeutet es hängt nicht am Programm, sondern an den Daten.
Gut, man könnte das im Programm abfangen, aber mit fehlerhaften Daten kommt dann da auch nichts vernünftiges raus.
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 14:29:34
sanane3443
also was heisst das jetzt genau :D
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 14:43:14
Oppawinni
Zwei Spalten links des Range("AttenTableOrigin") steht entweder keine Zahl oder diese zahl ist 0.
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 14:52:08
Oppawinni
oder es steht da ein Text
und ColourSelect() macht daraus eine 0
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 14:24:42
sanane3443
An dem SheetNumber = 0 kanns aber nicht liegen wie gesagt bei windows 7 funktioniert das einwandfrei. Ich habe das nicht programmiert aber ich denke das der wo das geschrieben hat das bewusst so gemacht hat. Wenn ich den fehler abfange erscheint zwar keine fehlermeldung aber das protokoll wird trotzdem nicht erstellt.
Leider..
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 16:47:44
daniel
Hi
also ich glaube nicht, dass das mit der SheetNumber 0 unter Windows 7 funktioniert hat.
Welche Excelversion habt ihr da eingesetzt? Vermutlich Excel 2003 oder älter. (zumindest lässt die Zahl 65536 darauf schließen, denn das war bis Excel 2003 die höchste Zeilennummer, heute hat man c.a 1,04 Millionen Zeilen zur verfügung (2^20)).
Vermutlich hat das ganze funktioniert, weil damals beim ersten Durchlauf diese Abfrage If lasttube = actualtube Then ein FALSE ergeben hat (lasttube > actualtube), denn False-Teil dieses Ifs bekommt dann SheetNumber einen Wert ungleich 0 zugewiesen.

du müsstest allerdings prüfen, ob dieser teil hier noch richtig arbeitet:

            If IsNumeric(ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Offset(, -2).value) Then


actualtube = ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Offset(, -2).value

Else

actualtube = ColourSelect(ThisWorkbook.Sheets(Counter).Range("AttenTableOrigin").Offset(, -2).text)

End If

wir können das nicht, da hier die selbst geschriebene Funktion ColourSelect verwendet wird.

Ich würde dir empfehlen, den Code für die neue Excelversion neu zu schreiben,
denn wenn jemand wie hier jede Zeile einzeln kopiert statt den ganzen Zellblock in einem Schritt, dann scheint der Programmierer nicht unbedingt viel Kenntnis von Excel gehabt zu haben,
               For i = StartRow To EndRow

'ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets("Überblicksblatt").Cells(DestinationRow - StartRow + 1 + i, 1)
ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets(SheetNumber).Cells(DestinationRow - StartRow + 1 + i, 1)
Next i


Gruß Daniel
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 16:56:59
sanane3443
Also ich habs jetzt gerade nochmal mit Windows sieben getestet und nachgesehen welche Version es ist. Es handelt sich tatsächlich um die Excel Version 2010 und nicht 2003. :(
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 16:59:42
Oppawinni
Was steht denn in der Zelle Range("AttenTableOrigin").Offset(, -2)
und kannst du vielleicht mal die Funktion ColourSelect(..) posten ?
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 17:46:36
Oppawinni
Du musst im Namensmanager schauen, worauf sich "AttenTableOrigin" bezieht.
Von dort 2 Spalten nach links. Was steht da in der Zelle?
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 17:13:17
schauan
... die Blattaufzählung begann schon vor 30 Jahren bei 1 :-)
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 17:41:21
Oppawinni
sheets(0) würde auch nicht benutzt, wenn vorher nicht etwas schief laufen würde.
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 11:54:40
sanane3443
oh sorry hahahah die ist es
ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets(SheetNumber).Cells(DestinationRow - StartRow + 1 + i, 1)
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 12:05:04
Daniel
Hi

Welchen Wert haben denn die in dieser Zeile verwendeten Variablen, wenn der Fehler Auftritt?

Gruß Daniel
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 12:16:39
sanane3443
In dem Lokal Fenster wird mir angezeigt NumRows 1, Counter 1, DestinationRow 20 SheetNumber 0, EndRow 65536, und i 8.
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 12:37:15
Daniel
SheetNumber 0 ist nicht zulässig.
dieser Wert müsst, wenn du ihn als Tabellenblattindex verwenden willst, mindestens 1 sein.
Also musst du mal schauen, wo diese Variable ihren Wert erhält und ob das korrekt ist.

Gruß Daniel
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 12:43:51
sanane3443
wenn ich SheetNumber mit SheetNumber = 1 deklariere läuft das Programm aber ewig und bricht dann zusammen. Das komische ist der Code ist in der alten Office Version einwandfrei gelaufen wenn ich es mit Windows 7 laufen lasse funktioniert es aber mit windows 10 und der neuen office Version halt nicht.
Anzeige
AW: Laufzeitfehler 9 Excel seit Office update 2010 zu 2016
21.03.2024 13:20:24
daniel
so richtig kann ich mir nicht vorstellen, dass das Makro so in der alten Excelversion gelaufen ist.
fakt ist einfach:
Sheets(0) ist nicht zulässig und du musst dafür sorgen, dass hier auch beim ersten Schleifenumlauf die Variable SheetNumber die Indexnummer desjenigen Tabellenblatts ist, in das die Daten eingefügt werden sollen.

wenn der Code ewig läuft, musst du mal prüfen, ob deine Ermittlung der Start- und Endzeilen für die zu kopierenden Daten richtig funktioniert.
ich kann den Code ohne die Datei nicht testen.

auch ist der Code sehr umständlich.
Bespielsweise kopierst du hier jede Zeile einzeln:
For i = StartRow To EndRow

'ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets("Überblicksblatt").Cells(DestinationRow - StartRow + 1 + i, 1)
ThisWorkbook.Sheets(Counter).Rows(i).Copy Destination:=ThisWorkbook.Sheets(SheetNumber).Cells(DestinationRow - StartRow + 1 + i, 1)
Next i

wesentlich schneller ist, alle Zeilen in einem block zu kopieren:

ThisWorkbook.Sheets(Counter).Range(StartRow & ":" & EndRow).Copy Destination:=ThisWorkbook.Sheets(SheetNumer).Cells(....)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige