Microsoft Excel

Herbers Excel/VBA-Archiv

Makro läuft nicht mit F5

Betrifft: Makro läuft nicht mit F5 von: Thomas
Geschrieben am: 06.10.2014 10:55:59

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

  

Betrifft: AW:der übliche Standardfehler von: Daniel
Geschrieben am: 06.10.2014 11:06:21

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


  

Betrifft: AW: AW:der übliche Standardfehler von: Thomas
Geschrieben am: 06.10.2014 12:06:36

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


  

Betrifft: AW: AW:der übliche Standardfehler von: Martin
Geschrieben am: 06.10.2014 12:34:46

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


  

Betrifft: AW: AW:der übliche Standardfehler von: Daniel
Geschrieben am: 06.10.2014 12:42:15

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


  

Betrifft: ...mach aus einer Mücke keinen Elefanten! von: Martin
Geschrieben am: 06.10.2014 12:53:16

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


  

Betrifft: AW: ...mach aus einer Mücke keinen Elefanten! von: Daniel
Geschrieben am: 06.10.2014 13:03:14

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


  

Betrifft: Bist du ein Beamter? Ohje, was sagst du dazu... von: Martin
Geschrieben am: 06.10.2014 13:29:50

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 ;-)


  

Betrifft: AW: Bist du ein Beamter? Ohje, was sagst du dazu... von: Daniel
Geschrieben am: 06.10.2014 14:08:02

bezieh dich einfach auf die Excelversion, die der Fragesteller angegeben hat.
Gruß Daniel


  

Betrifft: AW: AW:der übliche Standardfehler von: Daniel
Geschrieben am: 06.10.2014 12:50:33

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


  

Betrifft: AW: AW:der übliche Standardfehler von: Thomas
Geschrieben am: 06.10.2014 13:14:40

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



  

Betrifft: AW: AW:der übliche Standardfehler von: Daniel
Geschrieben am: 06.10.2014 13:19:27

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


  

Betrifft: AW: AW:der übliche Standardfehler von: Thomas
Geschrieben am: 06.10.2014 13:52:22

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


  

Betrifft: AW: AW:der übliche Standardfehler von: Martin
Geschrieben am: 06.10.2014 13:33:26

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


  

Betrifft: AW: Makro läuft nicht mit F5 von: Adis
Geschrieben am: 06.10.2014 15:59:05

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


  

Betrifft: AW: Makro läuft nicht mit F5 von: Ewald
Geschrieben am: 06.10.2014 23:52:00

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


  

Betrifft: AW: Makro läuft nicht mit F5 von: Thomas
Geschrieben am: 07.10.2014 06:20:13

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