Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Select-Methode erzeugt Fehlermeldung

Forumthread: Select-Methode erzeugt Fehlermeldung

Select-Methode erzeugt Fehlermeldung
16.10.2017 20:56:32
Dominik
Hallo an alle,
ich weiß momentan leider nicht weiter. Ich habe mittlerweile einen recht komplexen VBA-Code der auch weitestgehend durch Hilfe aus dem Forum ohne Probleme läuft. Nun gibt es aber noch ein Problem welches an unterschiedlichen Stellen auftritt und ich mir dieses einfach nicht erklären kann.
Es geht um den Befehl:
...
Tabelle1.Select
Tabelle1.Range(p_cstrZelleSpeicherort).Select
...
Beim ausführen bekomme ich die Meldung
Fehlermeldung:
"Laufzeitfehler '1004': Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.
in der Zeile "Tabelle1.Range(p_cstrZelleSpeicherort).Select". Zur Information Tabelle1= CodeName des Tabellenblattes.
Was mich so verwirrt, dass es wenn ich die Sub in der die Anweisung seht einzeln durchlaufen lasse, dann funktioniert alles wunderbar. Der Fehler scheint erst beim Starten des Befehles aus einer übergeordneten Sub diesen Fehler zu "produzieren". Zusätzlich noch die Information alle Tabellenblätte sind standardmäßig per Blattschutz geschützt. Den Schutz hebe ich aber vor der Select-Anweisung auf. Außerdem ist die selectierte Zelle im nicht geschützten Bereich.
Was kann ich hier machen? Ich will durch die Select-Methode am Ende immer eine definierte Zelle "aktiviert" haben.
Ich kann die Excel-Datei leider nicht hier hochladen, da diese sensible Informationen enthält. Ich hoffe aber Ihr könnt mir trotzdem helfen.
Ich wünsche Euch einen schönen Abend.
Gruß
Dominik
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
16.10.2017 21:07:21
Sepp
Hallo Dominik,
.Select und .Activate sind in VBA zu 99,9% unnötig und kontraproduktiv.
Gruß Sepp

AW: Select-Methode erzeugt Fehlermeldung
16.10.2017 21:08:24
onur
Tabelle1 ist schon selektiert, also nur noch Range(p_cstrZelleSpeicherort).Select.
Was für eine Variable ist denn p_cstrZelleSpeicherort genau und was ist drin?
Oder ist das ein Bereichsname?
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
16.10.2017 23:17:17
Daniel
Hi
Wie schon erwähnt, das Select braucht man für die VBA-Programmierung sehr selten, in der Regel kann man den Befehl immer direkt an den Zellbereich anhängen (anstelle des Selects).
Wenn du trotzdem eine Zelle auf einem bestimmten Blatt geziel anspringen willst, nimm
Application.Goto Tabelle1.Range(p_cstrZelleSpeicherort)
Damit kannst du die Zelle direkt anspringen, ohne vorher das Blatt selektieren zu müssen.
Eine weitere Fehlerquelle könnte das p_cstrZelleSpeicherort sein.
Diese Variable muss eine korrekte Zell-Adresse oder einen Namen enthalten.
Gruß Daniel
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
17.10.2017 10:49:18
Dominik
Ich werde es jetzt mal mit
Application.Goto Tabelle1.Range(p_cstrZelleSpeicherort) versuchen und hoffe, dass ich dann keine Fehlermeldung mehr erhalte. Ich brauche diese eben um nach dem Makro wieder in einer definierten Zelle zulade.
In der Variablen bzw. Konstanten p_cstrZelleSpeicherort steht "D7". Ich habe dies so gelöst um bei einer Änderung alle Bereiche die darauf zugreifen schnell abändern zu können.
Wie kann ich nur auf ein Blattwechseln ohne eine Zelle zu markieren?
Gruß
Dominik
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
17.10.2017 18:35:26
Sepp
Hallo Dominik,
ich bin mir ziemlich sicher, das du .Select, .Activate und auch .GoTo absolut nicht brauchst!
Kannst du nicht den Code zeigen?
Gruß Sepp

AW: Select-Methode erzeugt Fehlermeldung
17.10.2017 18:50:13
onur
Kann es sein, dass Tabelle1 nur der Name der Tabelle ist?
Wenn ja, versuchs mal mit Sheets("Tabelle1").Range(p_cstrZelleSpeicherort).Select.
Ist die Variable "p_cstrZelleSpeicherort" public deklariert? Setze doch mal ein "Stop" oder Haltepunkt vor der Problem-Zeile und schau dir im Debugger/Lokalfenster an, was die Variable enthält und ob sie wirklich ein String ist.
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
19.10.2017 12:20:19
Dominik
Hallo,
wie gesagt. Irgendwie scheint die Select-Anweisung nicht zu funktionieren sobald der Code verschachtelt ausgeführt wird.
Dann geschieht z. B. bei Tabelle1.Select nichts was wiederum dazu führt, dass die nächste Zeile des Codes den Laufzeitfehler bringt (vermute) ich zumindest. Tabelle1 ist nicht der Name (der ist Hauptfenster) sondern der Codename (dieser ist unveränderlich egal was der Benutzer ändert).
p_cstrZelleSpeicherort ist eine public variabele welche sich mit vielen anderen in einem eigenen Modul befindet. Diese hat momentan z. B. den Wert "D7".
Gibt es noch eine andere Anweisung mit der ich gezielt auf ein Blatt (mit Codename z. B. Tabelle2) "springen" kann?
Gruß
Dominik
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
19.10.2017 13:32:04
onur
Baue mal vor die problemzeile diese ein:
Debug.print activesheet.name
Stop
Wenn er stoppt, schaue im Direkt-Fenster nach, wie der name lautet.
Du kannst auch mal tabelle1.Activate vor tabelle1.select setzen und testen, obs klappt.
AW: Select-Methode erzeugt Fehlermeldung
19.10.2017 18:25:10
Dominik
Hi onur,
das klappt ja auch soweit nur eben nicht wenn die Select-Anweisung nach vielen andern Anweisungen durchlaufen soll. Dann passiert einfach nichts. Wenn ich also ein bestimmtes Blatt öffnen möchte dann muss es mit Select oder Activate gehen richtig? Ich weiß nun auch dass Select nicht in einem Code verwendet werden sollte wenn es sich vermeiden lässt. Mir geht es nur darum egal wie bzw. egal in welchem Blatt der Benutzer die Excel-Datei abspeichert. Beim nächsten Öffnen soll das Blatt (Codename: Tabelle1) wieder als erstes angezeigt werden (gezwungenes Zurücksetzten). Dafür brauche ich aber eben eine Anweisung die mir dies ermöglicht. Natürlich kann ich dann auch noch in eine Zelle springen aber wichtiger ist eben auf das Blatt zu wechseln.
Hilft alles nichts mit
Application.Goto ...
Funktioniert es dann brauche ich eben immer eine Zelle die keinen Blattschutz hat für den Wechsel.
Gruß
Dominik
Anzeige
AW: Select-Methode erzeugt Fehlermeldung
19.10.2017 18:30:55
onur
Einfach in Workbook_open:

Tabelle1.Activate
Tabelle1.select
Cells(7,7).select'Nur als Beispiel - ggf andere Zelle eingeben

eingeben.
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlermeldung bei der Select-Methode in VBA beheben


Schritt-für-Schritt-Anleitung

  1. Überprüfe den Blattschutz: Stelle sicher, dass der Blattschutz vor der Verwendung der Select-Methode aufgehoben wird. Du kannst dies mit folgendem Befehl tun:

    Tabelle1.Unprotect "DeinPasswort"
  2. Verwende Application.Goto: Statt die Select-Methode zu verwenden, kannst du die Zelle direkt ansteuern:

    Application.Goto Tabelle1.Range(p_cstrZelleSpeicherort)
  3. Überprüfe die Variable: Stelle sicher, dass p_cstrZelleSpeicherort korrekt definiert ist und eine gültige Zelladresse enthält (z.B. "D7").

  4. Wende Debugging an: Füge Debugging-Befehle wie Debug.Print ActiveSheet.Name ein, um sicherzustellen, dass das richtige Arbeitsblatt aktiv ist.

  5. Nutze Workbook_Open: Um beim Öffnen der Arbeitsmappe ein bestimmtes Blatt zu aktivieren, füge folgenden Code in das ThisWorkbook-Modul ein:

    Private Sub Workbook_Open()
       Tabelle1.Activate
    End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dies passiert häufig, wenn die Select-Methode des Range-Objekts nicht ausgeführt werden kann. Überprüfe, ob das Arbeitsblatt tatsächlich aktiv ist und die Zelle im nicht geschützten Bereich liegt.

  • Variable nicht korrekt: Wenn p_cstrZelleSpeicherort nicht den erwarteten Wert hat, wird der Fehler ebenfalls auftreten. Verwende Stop im Code, um die Variable zu überprüfen.


Alternative Methoden

Wenn du Schwierigkeiten mit der Select-Methode hast, kannst du folgende Alternativen nutzen:

  • Direktes Arbeiten mit Objekten: Statt .Select und .Activate zu verwenden, arbeite direkt mit den Objekten. Zum Beispiel:

    Tabelle1.Cells(7, 7).Value = "Neuer Wert"
  • Verwendung von With-Anweisungen: Mit With kannst du den Code übersichtlicher gestalten:

    With Tabelle1
       .Range("A1").Value = "Wert"
       .Range("B1").Value = "Wert"
    End With

Praktische Beispiele

Hier sind einige praktische Beispiele, die die Verwendung der Select-Methode vermeiden:

  • Zielgerichtetes Wechseln zu einer Zelle:

    Sub WechselZuZelle()
       Application.Goto Tabelle1.Range("D7")
    End Sub
  • Aktivieren eines Blattes beim Öffnen:

    Private Sub Workbook_Open()
       Tabelle1.Activate
    End Sub

Tipps für Profis

  • Vermeide die Verwendung von Select und Activate: In der VBA-Programmierung ist es oft besser, diese Methoden zu meiden, da sie den Code verlangsamen und zu Fehlern führen können.

  • Nutze die With-Anweisung: Dies verbessert die Lesbarkeit des Codes und spart Zeit.

  • Debugging-Tools verwenden: Nutze das Direktfenster, um Variablenwerte zu überprüfen und den aktuellen Zustand des Codes zu analysieren.


FAQ: Häufige Fragen

1. Frage: Was bedeutet die Fehlermeldung "Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden"?
Antwort: Diese Fehlermeldung tritt auf, wenn du versuchst, eine Zelle zu selektieren, während das betreffende Arbeitsblatt nicht aktiv ist oder der Blattschutz aktiv ist.

2. Frage: Wie kann ich ohne die Select-Methode auf ein Blatt wechseln?
Antwort: Du kannst einfach Tabelle1.Activate verwenden, um das Blatt aktiv zu machen, ohne die Select-Methode zu verwenden.

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