Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro läuft nicht mit F5

Forumthread: Makro läuft nicht mit F5

Makro läuft nicht mit F5
06.10.2014 10:55:59
Thomas
Hallo,
ich habe folgendes Problem:
Makros in denen kopiert und eingefügt wird laufen nicht durch.
Die ersten Spalten werden noch kopiert, dann kommt der Fehler "Laufzeitfehler 1004".
Lasse ich das Makro Schrittweise mit F8 durchlaufen kommt kein Fehler.
Erstellt wurden die Makros mit Office 2010 und hier laufen sie auch problemlos durch.
Jetzt verwende ich "Office Home and Business 2013".
Hier ein Auszug aus einem Makro:
Sheets(1).Range(Cells(a, 61), Cells(b, 61)).Copy
Sheets("SIM_SW").Range("u2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets(1).Range(Cells(a, 11), Cells(b, 12)).Copy
Sheets("SIM_SW").Range("g2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Hat jemand eine Idee?
Schon mal vielen Dank.
Gruß
Thomas

Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW:der übliche Standardfehler
06.10.2014 11:06:21
Daniel
Hi
Wenn du mit mehreren Blättern arbeitest, dann musst du das Blatt vor jedem Zellbezug (Cells, Columns, Rows, Range) angeben.
Das gilt auch für die Cells innerhalb der Range
Sheets(1).Range(Sheets(1).Cells(a, 61), Sheets(1).Cells(b, 61)).Copy
Da das zu langem und unübersichtlichen Code führt, solltest du Zellbereiche mit Hilfe der Resize-Funktion beschreiben
Sheets(1).Cells(a, 61).resize(b - a + 1, 1).copy
Gruß Daniel

Anzeige
AW: AW:der übliche Standardfehler
06.10.2014 12:06:36
Thomas
Hallo Daniel,
vielen Dank für die Info - gebracht hat's leider nichts, das Makro läuft nicht durch,
wie gesagt, es geht nur mit F8.
Vielleicht hast du ja noch eine Idee.
Gruß
Thomas

AW: AW:der übliche Standardfehler
06.10.2014 12:34:46
Martin
Hallo Thomas,
auch ich kann keinen Fehler feststellen. Daniel irrt sich in der Aussage, dass das Tabellenblatt zwingend vor Range beim Zellbezug stehen muss (...zumindest dann nicht, wenn bei bei Cells innerhalb der Range-Angabe der Tabellenblatt-Bezug angegeben ist).
Noch eine andere Möglichkeit zur Einsparung von Makrocode und Übersichtlichkeit besteht in der Verwendung von With:
    With Sheets(1)
Range(.Cells(a, 61), .Cells(b, 61)).Copy
End With
Bei mir werden die Zellen aus der Spalte "BI" aus dem ersten Tabellenblatt kopiert.
Viele Grüße
Martin

Anzeige
AW: AW:der übliche Standardfehler
06.10.2014 12:42:15
Daniel
Ich irre da nicht, ich beschreibe halt nur die Methode, die in jedem Fall funktioniert und nicht die nur teilweise funktioniert und bei der daher noch zusätzliche Erklärungen notwendig sind.
Gruß Daniel

...mach aus einer Mücke keinen Elefanten!
06.10.2014 12:53:16
Martin
Hey Daniel,
du hast geschrieben: "[...] dann musst du das Blatt vor jedem Zellbezug (Cells, Columns, Rows, Range) angeben." Das Wort "jedem" hast du sogar fett geschrieben.
Das stimmt so nicht. Meine Aussage ist also korrekt ;-)
Viele Grüße
Martin

Anzeige
AW: ...mach aus einer Mücke keinen Elefanten!
06.10.2014 13:03:14
Daniel
Damit deine Aussage korrekt ist, musst du immer dazu schreiben, dass sie nicht gilt, wenn der Code in einem Tabellenblattmodul steht.
In einem Tabellenblattmodul muss dass Tabellenblatt auch vor der Range stehen.
Gruß Daniel

Bist du ein Beamter? Ohje, was sagst du dazu...
06.10.2014 13:29:50
Martin
Die von mir ausgeführte Form des Zellbezugs funktioniert nur auf einem Computer mit installiertem Microsoft Excel in der Anwendung Microsoft Excel ab Version 5 mit aktivierten Makros in Makro-Modulen, Klassenmodulen und Formularen ;-)
Mist, VBA geht scheinbar auch in Online-Excel (http://support2.microsoft.com/kb/2028380/de)!
Jetzt ist mir ein Abgleich mit kompatiblen Browser-Versionen aber echt zu blöd ;-)

Anzeige
AW: Bist du ein Beamter? Ohje, was sagst du dazu...
06.10.2014 14:08:02
Daniel
bezieh dich einfach auf die Excelversion, die der Fragesteller angegeben hat.
Gruß Daniel

AW: AW:der übliche Standardfehler
06.10.2014 12:50:33
Daniel
Hi
Hast du das bei allen Range(cells, cells) beachtet?
Wenn du mit F8 durchtickerst, wechselt du dann manuell das Tabellenblatt um auf dem Richtigen Blatt zu sein?
Das Sheets(1).Range(Cells(), Cells()) funktioniert nämlich ohne Fehler, wenn zufällig das Sheet(1) aktiv ist. Erst wenn ein anderes Blatt aktiv ist, kommt der Fehler.
Deswegen fällt das oft nicht auf, wenn man im Einzelstep testet und nebenbei von Hand "mitblättert"
Ansonsten kann es auch sein, dass einfach die Datei nein Schuss hat. Dann hilft schliessen und neunöffnen.
Gruß Daniel

Anzeige
AW: AW:der übliche Standardfehler
06.10.2014 13:14:40
Thomas
Hallo,
nein, ich wechsle nicht von Hand das TB.
Es werden auf diese Weise 7 Spalten kopiert und an der 6. steigt das Programm aus.
Mit Schließen und danach neu öffnen geht's auch nicht besser.
Und mit Office 2010 hat es ja funktioniert.
Gruß
Thomas

AW: AW:der übliche Standardfehler
06.10.2014 13:19:27
Daniel
Hi
Wenn's mit fünfen geht und mit der sechsten nicht dann solltest du dir mal die sechste Spalten genauer anschauen und versuchen herauszufinden, was bei dieser Spalten anders ist als bei denen, wo es funktioniert.
Momentan kann ich dir dabei nicht helfen, weil ich deinen Datei nicht kenne.
Gruß Daniel

Anzeige
AW: AW:der übliche Standardfehler
06.10.2014 13:52:22
Thomas
Hallo,
an den Spalten habe ich nichts gefunden.
Aber ich habe die Reihenfolge geändert, die Problemstelle ans Ende geschoben und siehe da
das Makro lief durch - warum auch immer.
Vielen Dank für die Unterstützung.
Gruß
Thomas

AW: AW:der übliche Standardfehler
06.10.2014 13:33:26
Martin
Hallo Thomas,
du solltest in deinem Makro mit der Funktionstaste "F8" jede Codezeile einzeln durchgehen und verfolgen was passiert. Die Wahrscheinlich ist sehr hoch, dass du so das Problem findest.
Viele Grüße
Martin

Anzeige
AW: Makro läuft nicht mit F5
06.10.2014 15:59:05
Adis
Hallo Thomas
Ich bin Adis, und kenne die Schwierigkeiten bei Fehlersuche.
Mein Rat, kopiere die Datei und suche den Fehler in der Kopie. (Schutz vor Datenverlust!)
Schau mal bitte ob in dem Makro eine -On Error Anweisung- vorkommt und setze sie ausser Kraft.
Einfach ein ' vor On Error setzen, dann wird daraus ein Kommentar. Meine Methode so zu suchen!
Dann müsste beim Start das Makro mit Laufzeitfehler in der fehlerhaften Zeile stehen bleiben
und sie gelb markieren. Alle Makros sind jetzt blockiert und Excel muss im VBA Editor im Menü
Run durch Reset zurückgesetzt werden. So weiss man wenigstens -welche Zeile- ihn verursacht.
Wenn die Profis wissen in welcher Zeile der Fehler steckt können sie dir weiter hlefen!
Gruss Adis

Anzeige
AW: Makro läuft nicht mit F5
06.10.2014 23:52:00
Ewald
Hallo,
wenn im F8-Modus das Makro durchlaüft, rührt der Fehler im normalen Modus garantiert nicht von einer Bereichszuweisung her.
Hilfreich wäre natürlich die Zeile die angemeckert wird bei der Fehlermeldung und was vorher gemacht wurde.(die Zeilen davor)
Ursache könnte sein,der Pastebefehl ist noch nicht fertig(bei großen Bereichen) und es wird versucht den neuen Copybereich zu setzen.
Gruß Ewald

Anzeige
AW: Makro läuft nicht mit F5
07.10.2014 06:20:13
Thomas
Hallo zusammen,
vielen Dank für die Tipps.
Ewalds Vermutung ist auch meine, denn als ich den Bereich ans Ende des Makros gesetzt habe,
ist das Makro durchgelaufen. Ich habe schon bevor ich hier Hilfe gesucht habe, mit der
wait-Funktion Zeit zwischen den Kopiervorgängen zu schaffen. Das hat leider nicht funktioniert.
Gruß
Thomas
Anzeige
;
Anzeige

Infobox / Tutorial

Makroprobleme in Excel mit F5 lösen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Überprüfe dein Makro:

    • Suche nach der Zeile, wo der Fehler auftritt. Verwende die F8-Taste, um das Makro schrittweise zu durchlaufen und den genauen Fehler aufzuspüren.
  3. Zellbezüge anpassen:

    • Stelle sicher, dass du bei Zellbezügen das Arbeitsblatt angibst. Ändere beispielsweise:
      Sheets(1).Range(Cells(a, 61), Cells(b, 61)).Copy

      zu:

      Sheets(1).Range(Sheets(1).Cells(a, 61), Sheets(1).Cells(b, 61)).Copy
  4. Verwendung der With-Anweisung:

    • Reduziere den Code und erhöhe die Übersichtlichkeit mit der With-Anweisung:
      With Sheets(1)
       .Range(.Cells(a, 61), .Cells(b, 61)).Copy
      End With
  5. Fehlerprotokollierung aktivieren:

    • Kommentiere alle On Error-Anweisungen aus, um die genaue Fehlerstelle zu identifizieren:
      ' On Error Resume Next
  6. F5 verwenden:

    • Nachdem du die Anpassungen vorgenommen hast, teste das Makro erneut mit F5.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004:

    • Überprüfe, ob das richtige Arbeitsblatt aktiv ist. Der Fehler tritt häufig auf, wenn du von einem anderen Blatt aus versuchst, auf Zellen zuzugreifen.
  • F5 funktioniert nicht:

    • Wenn das Makro im F8-Modus ohne Fehler läuft, kann es an der Zeitverzögerung zwischen Kopiervorgängen liegen. Füge eine Wait-Funktion oder DoEvents ein:
      Application.Wait Now + TimeValue("00:00:01")
  • Kopieren und Einfügen:

    • Stelle sicher, dass der PasteSpecial-Befehl korrekt implementiert ist und dass der Bereich, in den du einfügst, nicht geschützt ist.

Alternative Methoden

  • VBA-Funktionen:

    • Nutze die Resize-Methode, um den Code kompakter zu gestalten:
      Sheets(1).Cells(a, 61).Resize(b - a + 1, 1).Copy
  • Makro neu starten:

    • Wenn das Makro weiterhin Probleme hat, schließe Excel und öffne die Datei erneut, um sicherzustellen, dass keine temporären Probleme vorliegen.

Praktische Beispiele

  1. Kopieren eines Zellbereichs:

    Sub CopyExample()
       Dim a As Integer, b As Integer
       a = 1
       b = 10
       Sheets(1).Range(Sheets(1).Cells(a, 1), Sheets(1).Cells(b, 1)).Copy
       Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues
    End Sub
  2. Verwendung von With:

    Sub WithExample()
       Dim a As Integer, b As Integer
       a = 1
       b = 10
       With Sheets(1)
           .Range(.Cells(a, 1), .Cells(b, 1)).Copy
           Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues
       End With
    End Sub

Tipps für Profis

  • Debugging nutzen:

    • Verwende die Debug.Print-Anweisung, um Variablenwerte während der Ausführung zu überprüfen.
  • Zellen in einer Schleife verarbeiten:

    • Überlege, ob du Schleifen verwenden kannst, um ähnliche Operationen auf mehrere Zellen durchzuführen, um den Code effizienter zu gestalten.
  • Leistungsoptimierung:

    • Schalte Bildschirmaktualisierungen vor der Ausführung des Makros aus:
      Application.ScreenUpdating = False

FAQ: Häufige Fragen

1. Warum läuft mein Makro nicht mit F5, aber mit F8? Das kann an der Aktivierung des falschen Arbeitsblatts liegen. Stelle sicher, dass das richtige Arbeitsblatt aktiv ist, bevor du das Makro ausführst.

2. Was kann ich tun, wenn ich einen Laufzeitfehler 1004 erhalte? Überprüfe, ob alle Zellbezüge korrekt sind und ob das Makro auf das richtige Blatt zugreift. Nutze auch die With-Anweisung, um den Code zu vereinfachen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige