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

Laufzeitfehler 1004 die Methode Range..

Laufzeitfehler 1004 die Methode Range..
11.04.2020 12:28:54
Peter
Hallo zusammen,
ich brauche Hilfe bei einem Laufzeitfehler '1004':
Die Methode '' des Objekts '_Global' ist fehlgeschlagen>
Ich habe selber keine großartigen Kenntnisse im VBA. Die Makros, die ich anwende habe ich größtenteils in diesem Forum recherchiert und an meine Anforderungen angepasst.
Ich komme selber nicht weiter. Und vor allen Dingen was mich an der ganzen Geschichte stört ist, dass dieser Fehler anscheinend Verweise auf so genannten Global erstellt, die evtl andere Makros stören könnten. So jedenfalls meine Befürchtung.
Dieser Fehler wird auf folgender Microsoft-Seite thematisiert:
https://support.microsoft.com/de-de/help/178510/excel-automation-fails-second-time-code-runs
ich komme mit Erklärung aber nicht weiter. Vielleicht kann mir jemand helfen und meine Fragen beantworten.
Laufzeitfehler '1004':
Die Methode '' des Objekts '_Global' ist fehlgeschlagen>
Das wäre mein Code bei dem der Fehler aufgetreten ist und zwar beim zweiten Ausführen des Makro:
Sub Werte_einfügen_bei_gesetztem_Filter()
Dim c As Range
Dim myRange As Range
'ich markiere einen bestimmten bereich und diese Zeile markiert in meiner Markierung sichtbare  _
Zellen. das klappt
ActiveSheet.Range(Selection.Address).SpecialCells(xlCellTypeVisible).Select
'diese Zeile soll neu markierte sichtbare Zellen in eine neue Range übergeben. das beschleunigt  _
das Makro um Längen, aber nur einmal eben, beim zweiten Durchlauf kommt der o.g. Fehler
Set myRange = Range(Selection.Address)
For Each c In myRange
c.Copy
c.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False 'Zwischenspeicher löschen
Application.ScreenUpdating = False 'damit bleibt das Ruckeln weg und es spart Zeit
Next c
MsgBox "fertig"
End Sub
********
Auf der Suche nach Lösung habe ich auf folgenden Code gestoßen und rein aus Neugierde ausgetestet. Und dieser MiniCode liefert ab dem zweiten Durchlauf den selben Fehler. Und ich weiß jetzt überhaupt nicht, ob die Ursache der Verweis aus dem oberen Code ist, so zu sagen eine Kettenreaktion ist oder nicht. Also große Verunsicherung.
Sub letzte_Zelle_in_SpalteA()
MsgBox Range(Range("A1").End(xlDown).Range("A65536").End(xlUp)).Address ' liefert den 1004  _
Fehler !!!!
End Sub

Ich hoffe es findet sich einer, der mir bei der Angelegenheit helfen kann.
Mfg
Peter

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 13:00:25
Werner
Hallo,
wiso nicht einfach mit einem "Einzeiler"?
Range(Selection.Address).SpecialCells(xlCellTypeVisible).Value = _
Range(Selection.Address).SpecialCells(xlCellTypeVisible).Value
End Sub
Gruß Werner
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 13:15:08
Daniel
Teste mal, aber das funktioniert meines Wissens nach nur mit lückenlosen Zellbereichen, die hier aber nicht unbedingt gegeben sind.
Frohe Ostern Daniel
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 18:49:10
Peter
Hallo Werner,
danke für schnelle Antwort. leider tut es nicht was es soll.
dein Code übernimmt den Wert der ersten Zelle in der Markierung und fügt ihn in alle anderen Zellen der Markierung ein. so war das nicht gedacht.
Mir geht es in erster Linie darum den Fehler in meinem Code zu beseitigen. Wenn er funktionieren würde dann wäre er perfekt, weil die Ausführung sehr schnell ist, wenn es eben funktionieren würde.
Ich glaube das Problem ist dass ich zwei mal hintereinander Range(Selection.Address) benutze, warum geht das nicht?
mfg
Peter
Anzeige
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 19:20:28
Werner
Hallo,
dann versuchs mal so:
Public Sub aaa()
Dim raZelle As Range
For Each raZelle In Range(Selection.Address).SpecialCells(xlCellTypeVisible)
raZelle.Value = raZelle.Value
Next raZelle
End Sub
Gruß Werner
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 22:00:01
Peter
Hallo Werner,
ja, der Code funktioniert gut. ist auch relativ schnell und keine Fehlermeldungen. Danke !!
ich will ja nicht langweilen, aber hast du eine Ahnung was an meinem Code falsch ist und wie ich ihn mit dem Ansatz Range(Selection.Address) benutzen könnte? ich verwende ihn sonst auch noch bei ein paar anderen Makros und da waren keine Probleme aufgetreten. hier mit den gesetzten Filter und "sichtbaren" Zellen ist was schief gegangen..
mfg
Peter
Anzeige
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 13:09:52
Daniel
Hi
Du bist da noch viel zu kompliziert unterwegs.
Die Selection ist ja schon eine Range, die man direkt ansprechen kann, dh
Statt Range(Selection.Address) reicht Selection
Auch würde ich die Variablenzuweisung direkt machen:
set myrange = Selection.specialcells(xlcelltypevisible)
Beachte, dass das .SpecialCells einen Fehlerabbruch erzeugt, wenn es keine Zelle finden kann.
Dh. dein Code läuft dann auf einen Fehler, wenn du Zellen selektiert und diese dann ausblendet.
Gruß Daniel
AW: Laufzeitfehler 1004 die Methode Range..
11.04.2020 19:17:12
Peter
Hallo Daniel,
danke für deine Antwort!
dein Vorschlag mit nur Selection also: ActiveSheet.Selection.SpecialCells(xlCellTypeVisible).Select funktioniert nicht da kommt gleich ein Fehler nach der Zeile.
so wie es in meinem Code steht "ActiveSheet.Range(Selection.Address).SpecialCells(xlCellTypeVisible).Select" tut VBA was es soll bei gesetztem Filter und Markierung in einer anderen Spalte markiert er jede Zelle einzeln. und dann übergibt er quasi diese Selection von einzelnen "sichtbaren" Zellen mittels Range(Selection.Address) an neue Range in meinem Fall myRange. Und die erste Ausführung vom Makro läuft superschnell. und der Grund ist glaube ich jedenfalls diese Selection.Address Variante.
dein zweiter Vorschlag mit "Set myRange = Selection.SpecialCells(xlCellTypeVisible)" funktioniert, Makro läuft, braucht aber viel viel länger.
ich verstehe eben nicht was an meinem Code so einen Crash verursacht und wie ich den soweit bekomme, dass er einwandfrei funktioniert und keine Probleme verursacht. schnell ist er ja beim ersten mal ).
Wenn du Lust hast kannst du es ja selber ausprobieren. Beim gesetzten Filter in der Spalte A die Zellen in der Spalte C (Multiplikation Zellen aus Spalte A und B) zu markieren und das Makro durchlaufen zu lassen. Aber ich denke bei dir wird der gleiche Fehler kommen. ich hoffe meine Erklärung ist verständlich, sonst könnten ich ein Exceldokument als Beispiel hochladen, sag nur Bescheid.
Frohe Ostern!
mfg
Peter
Anzeige
Ne Beispieldatei mit dem Fehler ist immer hilfreic
11.04.2020 20:54:09
Daniel
Und hast du schon mal das Selection ohne das ActiveSheet davor probiert?
AW: Ne Beispieldatei mit dem Fehler ist immer hilfreic
11.04.2020 21:56:14
Peter
Selection.SpecialCells(xlCellTypeVisible).Select
- das habe ich jetzt ausprobiert, und der Rest vom Code so belassen wie er war also mit "Set myRange = Range(Selection.Address)" es läuft bis Zelle 43 durch, dann kommt meine msgbox "fertig" und beim Rest der markierten Zellen passiert gar nichts, obwohl die nach der specialCells .. Select markiert waren.
wenn ich ab der Zelle 43 noch mal alle markiere und Makro noch mal starte dann kommt gleich der altbekannte Fehler 1004 mit Range und Global ....
Ich habe mittlerweile die Zeile noch so ergänzt und habe Makro laufen lassen "Set myRange = Range(Selection.Address(external:=True))" der Fehler kommt jetzt nicht mehr, aber das Makro läuft 37 Zellen durch und dann bringt meine msgbox "fertig" und das war's. keine Meldung von VBA dass das Makro nicht bei allen markierten Zellen angewandt wurde, gar nicht. Makro geht normal zu Ende.
Wenn das nicht seltsam ist...
Jedenfalls danke für deine Mühe!
mfg
Peter
Anzeige

52 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige