Supportnet / Forum / Tabellenkalkulation
Excel Laufzeitfehler
Frage
Habe eine Arbeitsmappe mit mehreren Tabellenblättern. Ich lösche bestimmte Inhalte über ein Makro das ich mit einer Schaltfläche belegt habe. ( Makro aufgezeichnet und dann der Schaltfläche zugewiesen ). Nun bin ich auf die Idee gekommen eine weitere Schaltfläche anzulegen und bestimmte Werte aus den jeweils angewählten Tabellenblatt in das Tabellenblatt Gesamt zu übertragen um die wichtigsten Werte dort zu sichern. Hab wieder ein Makro aufgezeichnet und es funktioniert. Nur wenn ich dem 2ten Button das Makro hineinkopiere ( über Code anzeigen )und auf die Schaltfläche drücke kommt - Laufzeitfehler 1004 der Select Modus des Range Objekts kann nicht ausgeführt werden -
Rufe ich aber nur das Makro über Extra - Makro -ausführen auf funktioniert es !!
Was mache ich nur Falsch ???
hier der Button 2
Private Sub CommandButton2_Click()
'
' Makro4 Makro
' Makro am 15.11.2004 von aufgezeichnet
'
'
Sheets("Gesamt").Select
Selection.Insert Shift:=xlDown
Range("G23").Select
Sheets("Rechnung 20").Select
Range("B9").Select
Selection.Copy
Sheets("Gesamt").Select
Range("D4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Rechnung 20").Select
Range("B12").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamt").Select
Range("E4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Rechnung 20").Select
Range("E19").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamt").Select
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Rechnung 20").Select
Range("F31").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Gesamt").Select
Range("J4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Rechnung 20").Select
Range("F17").Select
Application.CutCopyMode = False
Range("F17").Select
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
Danke für die Hilfe im Voraus !!
Antwort 1 von schnallgonz
Hallo Henner4711,
ich glaube, das liegt daran, dass Excel (97?) beim Springen zwischen den Tabellenblättern mit der Zuordnung der Zellen durcheinander kommt.
Bei einem meiner Makros, das Daten aus einem Tabellenblatt in ein anderes Tabellenblatt filtert, kam dieselbe Meldung.
Abhilfe schafft man, wenn in der Range-Anweisung das Arbeitsblatt mit angegeben wird oder man gibt den anzuspringenden Zellen einen Namen als eindeutige Zuordnung.
Diese Namen werden dann in der Range-Anweisung wiederholt.
Bsp.:
Der Zelle "B9" in dem Blatt "Rechnung20" gibt Du den Namen "Yo" oder "Re20Bneun"
(über EINFÜGEN / NAMEN / FESTLEGEN) und schreibst dann in Dein Listing nicht:
sondern:
oder:
je nachdem, welche Namen Du verwendest.
Viel Glück
Gruß
schnallgonz
ich glaube, das liegt daran, dass Excel (97?) beim Springen zwischen den Tabellenblättern mit der Zuordnung der Zellen durcheinander kommt.
Bei einem meiner Makros, das Daten aus einem Tabellenblatt in ein anderes Tabellenblatt filtert, kam dieselbe Meldung.
Abhilfe schafft man, wenn in der Range-Anweisung das Arbeitsblatt mit angegeben wird oder man gibt den anzuspringenden Zellen einen Namen als eindeutige Zuordnung.
Diese Namen werden dann in der Range-Anweisung wiederholt.
Bsp.:
Der Zelle "B9" in dem Blatt "Rechnung20" gibt Du den Namen "Yo" oder "Re20Bneun"
(über EINFÜGEN / NAMEN / FESTLEGEN) und schreibst dann in Dein Listing nicht:
Range("B9").Select
sondern:
Range("Yo").Select
oder:
Range("Re20Bneun").Select
je nachdem, welche Namen Du verwendest.
Viel Glück
Gruß
schnallgonz