Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
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
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Laufzeitfehler 9 unter Office 2000

Laufzeitfehler 9 unter Office 2000
18.06.2007 09:32:51
sigi
Hallo,
ich habe ein Problem mit einem Makro, beim ausführen kommt die Fehlermeldung "Laufzeitfehler 9" Index ausserhalb des gültigen Bereichs. Der Debugger zeigt auf die Zeile ... "Worksheets(abt).Delete". Diesen Fehler erhalte ich aber nur unter Office 2000 - Office XP und Office 2003 funktionieren einwandfrei mit diesem Makro.
Ich möchte mit diesem Makro von einer Arbeitsmappe gewisse Bereiche kopieren und in eine andere Mappe einfügen (anbei das vollständige Makro).
Um Hilfe wäre ich sehr dankbar.
Grüsse
Sigi

Sub Kopieren_GR()
Dim w As Worksheet
Dim abt As String
Dim str As String
abt = Sheets("STAMM").Range("A4")
Workbooks.Open(fktPfad() & "Bericht Ressort.xls").RunAutoMacros xlAutoOpen
Application.DisplayAlerts = False
Worksheets(abt).Delete
Worksheets.Add after:=Sheets(Sheets.Count - 2)
ActiveSheet.Name = abt$
Application.DisplayAlerts = True
Cells.Select
With Selection.Interior
.ColorIndex = 2
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
ActiveWindow.Zoom = 75
Windows(abt & ".xls").Activate
For Each w In Worksheets
If w.Name = "FC" Or w.Name = "LC" Or w.Name = "PC" Or w.Name = "Kennzahlen" Then
str = w.Name
Sheets(w.Name).Select
Application.Goto Reference:=w.Name & "_all"
Selection.Copy
Windows("Bericht Ressort.xls").Activate
If str = "FC" Then
Range("A7").Select
Else
Range("a65536").End(xlUp).Offset(1, 0).Select
End If
ActiveSheet.Paste
Application.CutCopyMode = False
Windows(abt & ".xls").Activate
End If
Next w
Windows("Bericht Ressort.xls").Activate
Sheets(abt).Activate
Range("x6").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="1"
ActiveWorkbook.Save
Workbooks("Bericht Ressort.xls").Close
Windows(abt & ".xls").Activate
Sheets("Menü").Select
Range("C11").Select
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 9 unter Office 2000
18.06.2007 09:53:00
Tom
Hallo Sigi,
guck' mal ob bei Ausführung des Makros das Worksheet dessen Name dem Inhalt der Variablen abt entsprechen muss auch existiert und falls ja, ob nach dem erfolgreichen Löschen dann noch mindestens ein weiteres Worksheet vorhanden ist.
Gruß
Tom

AW: Laufzeitfehler 9 unter Office 2000
18.06.2007 10:06:00
sigi
Hallo Tom,
Ja das Worksheet ist vorhanden und der Name der Variable abt ist korrekt. Ich habe einen Verdacht: die Arbeitsmappe hat den Namen "Präsidiales und Finanzen.xls" und das Worksheet in dieses kopiert werden soll hat ebenfalls diesen Namen - Können Umlaute vom VBA verarbeitet werden?
Zu deiner Frage noch, nach dem löschen wird ein neues Tabellenblatt eingefügt und erhält wieder den Namen "Präsidiales und Finanzen" - es sind aber noch weitere Worksheets vorhanden.
Danke für deine Antwort.
Gruss
Sigi

Anzeige
AW: Laufzeitfehler 9 unter Office 2000
18.06.2007 10:20:00
sigi
Hallo Tom,
entschuldigung meine vorherige Ausführung war ein bisschen unverständlich.
Ich lösche in der der Arbeitsmappe "Bericht Ressort.xls" das Tabellenblatt "Präsidiales und Finanzen" und füge danach ein neues Tabellenblatt mit dem Namen "Präsidiales und Finanzen" ein, danach kopiere ich aus dem Arbeitsblatt "Präsidiales und Finanzen.xls" dies Bereiche und füge diese in die Arbeitsmappe "Bereicht Ressort.xls" - Tabellenblatt "Präsidiales und Finanzen" ein.
Bei diesem Vorgang sind die beiden Arbeitsmappen (Bericht Ressort und Präsidiales un Finanzen" offen - jede Arbeitsmappe hat mehrere Tabellenblätter enthalten.
Ich hoffe diese Ausführung ist ein wenig verständlicher.
Danke
Sigi

Anzeige
AW: Laufzeitfehler 9 unter Office 2000
18.06.2007 10:22:13
Tom
Hallo Sigi,
Umlaute können normalerweise von VBA problemlos verarbeitet werden.
Aber ich hab' eine andere Idee, die ich aber nicht selbst überprüfen kann.
Möglicherweise liegt es an dem Punkt in Präsidiales und Finanzen.xls.
Ich hab' selbst Excel 2003 da funktionierts, aber evtl. bei Excel 2000 noch nicht.
Gruß
Tom

AW: Laufzeitfehler 9 unter Office 2000
18.06.2007 13:39:33
Luschi
Hallo Sigi,

gerade beim Datenaustausch zwischen 2 Arbeitsmappen muß man die Objektzuweisungen sehr genau  _
nehmen.
In Deinem Vba-Code werden zwar die eigentlichen Objekte angesprochen, aber zu welcher Tabelle  _
und zu welcher Arbeitsmappe
das Objekt gehört, überläßt Du Excel; und damit dem Zufall.
Hier nur zwei Beispiele:
Worksheets(abt).Delete
Cells.Select
Hier stelle ich mir die folgenden Fragen:
1. In welcher Arbeitsmappe soll die Tabelle gelöscht werden, deren Name in der Variablen "abt"  _
steht?
2. In welcher Tabelle sollen alle Zellen selektiert werden und in welcher Arbeitsmappe befindet
sich diese Tabelle?
Hier muß genauer gearbeitet werden: Nur mal ein Anfangs-Scenario:
Dim wb1 As Workbook, wb2 As Workbook, _
w As  As Worksheet
Dim abt As String, str As String
'ist die Arbeitsmappe, von wo aus das Makro gestartet wurde
Set wb1 = Thisworkbook
abt = wb1.Sheets("STAMM").Range("A4")
'lt. ExcelXP-Vba-Hilfe wird die Arbeitsmappe "Bericht Ressort.xls" geöffnet und das " _
Auto_Open"
'gestarten
'Damit ist aber wb2 die aktive Arbeitsmappe und nicht mehr wb1, aus dem das Makro gestartet  _
wurde
set wb2 =  Workbooks.Open(fktPfad() & "Bericht Ressort.xls").RunAutoMacros xlAutoOpen
Application.DisplayAlerts = False
'in der Arbeitsmappe die Tabelle löschen, von wo aus das Makro gestartet wurde
wb1.Worksheets(abt).Delete
wb1.Worksheets.Add after:=wb1.Sheets(Sheets.Count - 2)
ActiveSheet.Name = abt$
Application.DisplayAlerts = True
'usw. usf.
Also bei jeder Zuweisung eines Objektes die genaue Adresse und Hausnummer angeben:
- bei der Tabelle die dazugehörige Arbeitsmappe
- bei einem Range/Cells - Bereich die Tabelle und die Arbeitsmappe
Sicher mag das Vba-Programm mit ExcelXP/Excel2003 ohne Fehlermeldung laufen, aber ob es auch  _
richtig funktioniert, kann man bei Deinem Code nicht vorhersagen.
Das Löschen von Tabellen und anschließendem Neuerstellen mit dem gleichen Namen hat den  _
Nachteil, das sich Formeln, die sich auf Zellen
dieser Tabelle berufen, in Luft auflösen und nur noch den Wert "#BEZUG" liefern; eine  _
Wiederherstellung solcher Formeln ist nicht mehr möglich.
Statt:  wb1.Worksheets(abt).Delete besser
wb1.Worksheets(abt).Clear
Bitte fasse diese Hinweise nicht als böse Kritik auf, aber immer wieder sieht man in den  _
Excelforen solche laschen
Lösungsvorschläge, die zwar innerhalb 1 Arbeitsmappe das richtige Resultat liefern, aber beim  _
Zusammenspiel von 2 oder mehr Arbeitsmappen das Chaos bringen - auch
wenn keine Fehlermeldung erscheint: leider auch von ordensdekorierten MVP's.

Gruß von Luschi
aus klein-Paris
PS: Bitte nicht nur den Kopf in den Sand stecken, sondern auch wieder herausziehen, um derExcel-Vba-Welt die Stirn zu zeigen!

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige