Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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

Seltsamer Laufzeitfehler Visual Basic

Seltsamer Laufzeitfehler Visual Basic
Susanne
Hallo,
ein total simples Makro erzeugt bei mir einen "Laufzeitfehler", der so aussieht:
http://tinyurl.com/34hj4s6
Klickt man dann auf "Debuggen", wird der komplette, zweizeilige Code des höchst einfachen Makros gelb unterlegt:
http://tinyurl.com/33chzuu
Was um alles in der Welt ist denn *daran* jetzt falsch?
AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 00:11:14
fcs
Hallo Susanne,
die Sortieranweisung als solche ist korrekt und funktioniert bei mir problemlos unter Excel2007.
Irgensetwas muss also in deiner Datei vor dem Sortieren vorhanden, eingestellt oder selektiert sein, was den Sortiervorgang stört.
In früheren Excel-Versionen gab es gelegentlich Probleme, wenn beim Start eines Makros ein Steuerelement den Fokus hatte, dann musste erst eine Zelle aktiviert werden, bovor das Makro bestimmte Aktionen mit Zellbereichen ausführen konnte.
Weiteres mögliches Problem: das Makro wurde mit einer neuen Excelversion erstellt und dann in einer älteren Version benutzt. Kann Probleme machen, wenn wie z.B. beim Sortieren in der neueren Version zusätzliche Parameter angegeben werden können bzw. vom Makrorekorder aufgezeichnet werden, die die frühere Version nicht kennt.
Die Sortierfunktion reagiert auch "allergisch" auf verbundene Zellen. Dann ist die Fehlermeldung allerding anders.
Hier mal ein paar Modifikationne deines Makros, die evtl.zum Ziel führen.
Gruß
Franz
Sub Sortieren()
Range("A7:AZ2500").Sort Key1:=Range("F7"), Order1:=xlDescending, Header:=xlNo, _
ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Sub Sortieren1()
Range("A1").Activate
Range("A7:AZ2500").Sort Key1:=Range("F7"), Order1:=xlDescending, Header:=xlNo, _
ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Sub Sortieren2()
Range("A7:AZ2500").Sort Key1:=Range("F7"), Order1:=2, Header:=2, _
ordercustom:=1, MatchCase:=False, Orientation:=1
End Sub
Sub Sortieren3()
Range("A7:AZ2500").Sort Key1:=Range("F7"), Order1:=2, Header:=2
End Sub

Anzeige
AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 05:47:10
Susanne
Hallo Franz,
In früheren Excel-Versionen gab es gelegentlich Probleme, wenn beim Start eines Makros ein Steuerelement den Fokus hatte, dann musste erst eine Zelle aktiviert werden, bovor das Makro bestimmte Aktionen mit Zellbereichen ausführen konnte.

bevor das Sortieren-Makro aufgerufen wird, wird jeweils ein "Range("A1").Activate" durchgeführt, daran kanns also nicht liegen. Vielleicht besser "Range("A1").Select" nehmen? *Davor* wird nämlich ein großer Zellbereich noch reinkopiert, der dann wenn das Sortieren startet noch "Selektiert" ist. Ich weiß nicht ob "Range("A1").Activate" das hinreichend aufhebt?
Weiteres mögliches Problem: das Makro wurde mit einer neuen Excelversion erstellt und dann in einer älteren Version benutzt. Kann Probleme machen, wenn wie z.B. beim Sortieren in der neueren Version zusätzliche Parameter angegeben werden können bzw. vom Makrorekorder aufgezeichnet werden, die die frühere Version nicht kennt.
auch das kanns nicht sein, das Makro wurde zwar auf einem anderen Rechner aufgezeichnet, allerdings mit der gleichen Office-Version. Und die Parameter sind ja nun nicht kompliziert oder irgendwie "neu" bzw. exotisch
Anzeige
AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 09:47:08
Jürgen
Hallo Susanne,
wie Deinem anderen Thread zu diesem Problem (https://www.herber.de/forum/messages/1180845.html) zu entnehmen ist, liegt Dein Rechner bei einer Speicherauslastung von 2,3 GB - m.E. ist das für eine Windows XP Maschine recht viel (zumal dann ja auch noch zusätzlich ein großer Batzen in der Auslagerungsdatei liegen wird). Für nicht sehr wahrscheinlich, aber auch nicht für ausgeschlossen halte ich, dass der Rechner tatsächlich ein seine Grenzen stößt. Hast Du das Makro mal mit kleineren Zellbereichen laufen lassen? Funktioniert das Sortier-Makro, wenn Du das Kopieren der Zellen vorher von Hand statt per Makro durchführst?
Gruß, Jürgen
Anzeige
AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 09:57:42
Susanne
Hallo Jürgen,
ja, die Speicherauslastung liegt am Hunger von Mozilla Firefox, Excel und Thunderbird. Aber daran liegts nicht. Denn der Fehler kommt auch, wenn nur Excel läuft und lediglich 1,x GB Speicher ausgelastet sind...
AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 09:57:40
Luschi
Hallo Sabine,
füge vor dem Sortierbefehl mal diese Vba-Zeile ein:
MsgBox ActiveSheet.Name & vbCrLf & Range("A7:AZ2500").Parent.Name
Damit werden die Tabellenname der aktiven (also sichtbaren) Tabelle und der Tabellenname des zu sortierenden Range-Bereiches angezeigt - beide Namen sollten gleich sein.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 09:59:22
Susanne
ok, versuch ich abends, danke - bin grad im Büro. Ich gebe bescheid
wichtigste Frage ist noch unbeantwortet...
08.10.2010 11:00:20
Björn
Hallo,
Jürgen fragte:
"Funktioniert das Sortier-Makro, wenn Du das Kopieren der Zellen vorher von Hand statt per Makro durchführst?"
Und fcs hat auch schon vermutet:
Irgensetwas muss also in deiner Datei vor dem Sortieren vorhanden, eingestellt oder selektiert sein, was den Sortiervorgang stört.
Bevor Du das nicht beantwortet hast, brauchen wir nicht weiterrätseln.
Wie schon gesagt, wahrscheinlich liegt es an Deinen Daten, oder einer falschen Markierung oder oder oder.
Bitte versuch es mal manuell und berichte uns.
Gruß
Björn B.
Anzeige
AW: wichtigste Frage ist noch unbeantwortet...
08.10.2010 11:59:46
Susanne
kann ich erst am Abend. Das Sortier-Makro wird aus einem anderen Makro heraus aufgerufen. Dieses andere Makro kopiert große Zellbereiche hin und her - die Tabelle in die diese Zellen reinkopiert werden wird dann sortiert. Und genau an dem Punkt kommt der Laufzeitfehler...
AW: wichtigste Frage ist noch unbeantwortet...
08.10.2010 13:18:10
Susanne
wenn ich nach der Fehlermeldung übrigens den Debugger wieder schließ ist das ganze Excel irgendwie "blockiert". Ich kann keine Zellen markieren oder so.
die ganze Prozedur sieht so aus:
Sub test()
Windows("test.xls").Activate
Sheets("ze1").Select
Range("A7:Z2500").Select
Selection.Copy
Sheets("ze1").Select
Range("A7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
Sheets("ze2").Select
Range("A1").Select
Call sort
End Sub
Wobei das Makro "sort" eben dieser Sortiercode in einem eigenen Code steht
Sub sort()
' Tastenkombination: Strg+b
Range("A7:AZ2500").Sort Key1:=Range("F7"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
treibt mich zum Wahnsinn. Sieht doch alles fehlerfrei und simpel aus... - dauernd dieser Laufzeitfehler an jener Stelle, wos ans Sortieren geht...
führe ich das Makro manuell via Menü aus klappts übrigens tatsächlich einwandfrei. Woran bitte liegt das also?!
Anzeige
AW: wichtigste Frage ist noch unbeantwortet...
08.10.2010 21:59:55
fcs
Hallo Susanne,
die Select-Anweisungen und Selection.irgendwas-Zeilen kannst du komplett anders umsetzen, auch wenn deine beiden Makros so funktionieren.
Mögliche Ursachen für die Probleme:
1. Du hast eine oder beide Prozeduren in einem Tabellen-Blatt-Modul gespeichert.
In diesem Fall gibt es ggf. 2 mal Ärger:
1.1 Excel muckt auf, dass eine Prozedur den Namen "Sort" hat.
1.2 Alle Zeilen mit Anweisungen, die Range("...") oder Cells(..., ...) enthalten, beziehen sich immer auf das Blatt unter dem der Code abgelegt ist. Ist das aktive Blatt verschieden von dem Blatt in dem der Code steht, dann gibt es eine Fehlermeldung in Bezug auf Range-Objekte.
Abhilfe:
1.1 Benenne die Prozedur Sort um in Sortieren, so dass der Name keiner gleichnamigen VBA-Methode entspricht.
1.2 Alle Range-Objekte müssen komplett referenziert werden mit Angabe des zugehörigen Worksheet-Objektes.
2. Du wechselst vor dem Sortieren in das Blatt "ze2". Ist das so gewollt?
Die VBA-Prozedur versucht dann in diesem Blatt zu sortieren. Möglicherweise gibt es da weitere Hindernisse. z.B. verbundene Zellen.
Ich hab mal eine Datei "Test.xls" mit den Blättern "ze1" und "ze2" nachgebaut und deine Prozeduren in einer anderen Datei espeichert.
Wenn deine beiden Prozeduren in einem allgemeinen Modul gespeichert sind, dann funktionieren sie, sind sie in einem Tabellen-Modul gespeichert, dann siehe oben.
Mit den folgenden Anpassungen sollten die Prozeduren unabhängig vom Speicherort funktionieren, außer Problem 2 tritt auf.
Gruß
Franz
Sub test()
With Workbooks("test.xls")
.Activate
With .Worksheets("ze1").Range("A7:Z2500")
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End With
.Sheets("ze2").Activate
End With
Call Sortieren
End Sub
'Wobei das Makro "sort" eben dieser Sortiercode in einem eigenen Code steht
Sub Sortieren()
' Tastenkombination: Strg+b
With ActiveSheet
.Range("A7:AZ2500").sort Key1:=.Range("F7"), Order1:=xlDescending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub
Wenn die die Probleme nicht im Blatt ze2
Anzeige
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 12:10:34
Susanne
hilft alles nix, es scheint echt was mit der Speicherauslastung zu tun zu haben. Ich kanns kaum glauben. Unter 2 Gb Speicherauslastung klappts (meistens), darüber nie...
Braucht das Kopieren soviel Speicher?! Und sollte "Application.CutCopyMode = False" diesen Speicher nicht eigentlich rechtzeitig wieder freigeben?!?
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 13:00:40
Susanne
ach, das is einfach eine Qual. Jetzt kam der Fehler auch bei lediglich 1,5 GB Speicherauslastung
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 13:16:23
Susanne
ok, ganz neue Erkenntnis: Es scheint irgendwas damit zu tun zu haben, ob das Excel-Fenster "im Fokus", also im Vordergrund ist. Wenn dem so ist scheints auch bei hoher Speicherauslastung durchzulaufen ohne Fehler...
Anzeige
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 13:26:22
Susanne
ok, daran scheints echt zu liegen - sobald ein anderes Fenster als Excel im Fokus ist, liefert das Makro den Laufzeitfehler. Ist Excel dagegen im Vordergrund, läufts problemlos.
What - the - fuck ?
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 13:34:21
Susanne
das erklärt jetzt auch warum der Laufzeitfehler *nie* kam, wenn ich das Makro über das Excel-Menü gestartet habe - auf diese Art und Weise war Excel ja auch immer im Vordergrund.
Aber warum um alles in der Welt spielt das eine Rolle?!
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 15:32:50
fcs
Hallo Susanne,
wenn du das Makro arbeiten lassen willst, wenn Excel nicht die aktive Anwendung ist, dann muss du die Makros so gestalten, dass keine Activate- und Select-Anweisungen vorkommen. Diese erfordern zwingend, das Excel die aktive sprich Anwendung mit dem Fokus ist.
Select und Activate machen ja nichts anderes als das was du mit der Maus oder Tastatur machst. Und diese können immer nur in dem Windows-Fenster Aktionen auslösen, dass momentan aktiv ist bzw. den Fokus hat.
Gruß
Franz
Anzeige
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 15:35:32
Susanne
aber dafür ist doch eigentlich "Windows("test.xls").Activate" da, oder nicht? Stünde doch im Code.
Was mich immer noch irritiert: Am anderen Rechner läufts ohne Probleme durch. Auf diesem aber nur dann, wenn Excel im Fokus ist. Ich kapiers nicht.
AW: wichtigste Frage ist noch unbeantwortet...
09.10.2010 16:42:32
Susanne
Hallo fcs,
noch etwas: wäre das der Grund, müsste der Laufzeitfehler doch bereits beim Kopieren und Einfügen kommen. Auch da werden ja Zellen selektiert. Der Fehler kommt aber erst wenn das Sortieren-Makro aufgerufen wird, der Code davor läuft wunderbar durch obwohl Excel nicht im Vordergrund ist.
AW: wichtigste Frage ist noch unbeantwortet...
10.10.2010 05:16:13
Susanne
am Aufrufen selbst liegts übrigens auch nicht. Der Fehler kommt - egal ob via "Application.Run", "Call" oder durch direktes Einfügen des Sortier-Codes ins erste Makro sortiert wird... - und immer werden die beiden Zeilen Sortier-Code gelb unterlegt
Vorschag:neuer Beitrag..
10.10.2010 09:21:13
robert
Hi,
wäre es nicht sinnreicher einen neuen beitrag zu eröffnen?
wer soll sich denn da alles durchlesen ?
daher-neue frage, neues glück ;-)
gruß
robert
AW: Vorschag:neuer Beitrag..
10.10.2010 09:23:40
Hajo_Zi
Hallo Robert,
wenn ich das richtig sehe ist dies schon der 2. Beitrag zu diesem Problem, meinst Du da hilft jetzt ein 3. Beitrag?

AW: Seltsamer Laufzeitfehler Visual Basic
08.10.2010 13:19:44
Susanne
füge vor dem Sortierbefehl mal diese Vba-Zeile ein:
MsgBox ActiveSheet.Name & vbCrLf & Range("A7:AZ2500").Parent.Name
Damit werden die Tabellenname der aktiven (also sichtbaren) Tabelle und der Tabellenname des zu sortierenden Range-Bereiches angezeigt - beide Namen sollten gleich sein.

yep, sind gleich
Wieso kannst Du...
08.10.2010 13:47:56
Björn
alle 20 Minuten ne Antwort schreiben, irgendwas aus dem Code posten, aber immer noch diese einfache Frage, ob es bei manuell auch passiert, nicht beantworten?
Probier das einfach mal, bevor noch 20 (wahrscheinlich) unnötige Informationen bringst.
Gruß
Björn B.
AW: Wieso kannst Du...
08.10.2010 17:46:16
Susanne
hättest du meine Postings gelesen, hätte sich die Frage jetzt erübrigt
AW: Wieso kannst Du...
08.10.2010 19:03:50
Gerold
Hallo Susanne
Ist es möglich das da noch irgendwo ein Schutz auf der Tabelle liegt ?
Bei mir klappt der Code prima.
Ist es gewollt das in die gleiche Seite reingeschrieben wird,
aus der kopiert wurde, aber eine andere Seite sortiert werden soll.
Mfg Gerold
da hast du auch wieder recht...
08.10.2010 21:46:14
Björn
Hallo noch mal,
da du so viel geschrieben hast, muss ich zu meiner Schande gestehen, dass ich das am Ende nicht mehr gelesen habe. Sorry.
Also mein Tipp wäre jetzt, wenn es manuell klappt, dass Du Dir das ganze mit dem Makrorekorder aufzeichnest und dann den Code vom Rekorder mit Deinem mal vergleichst, irgendwas muss da ja dann anders sein.
Gruß
Björn B.

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige