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

Forumthread: Worksheet.Range.Select --> Fehler 1004

Worksheet.Range.Select --> Fehler 1004
21.03.2007 13:01:58
MarkusP123
Hi!
Ich habe mit folgendem Codestück ein Problem, dass ich einfach nicht gelöst bekomme und zwar schon zig Varianten probiert habe, aber keine davon gepasst hat.
Der Code soll einfach in der gleichen Arbeitsmappe aber auf einem anderen Arbeitsblatt eine Zelle auswählen.
Was passt an folgendem Code nicht? (dieser steht in Tabelle 2)

Private Sub Worksheet_Calculate()
Worksheets("Tabelle 1").Cells(3, 5).Select
SendKeys ("^%{F9}")
End Sub
Ich bekomme immer die Fehlermeldung 1004: Select-Methode ds Range-Objekts konnte nicht ausgeführt werden.
Oder gibt es eine ganz andere Möglichkeit das Arbeitsblatt vollständig neu berechnen zu lassen?
Vielen Dank für eure Hilfe!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet.Range.Select --> Fehler 1004
21.03.2007 13:04:00
Hans
Hallo Markus,
bevor Du die Zelle auswählst, musst Du in das Blatt:
Worksheets("Tabelle1").Select
Oder verwende die Application.GoTo-Methode.
Gruss hans
Danke!
21.03.2007 13:07:53
MarkusP123
Schau einer an, das funktioniert perfekt!
Diese Website erleichtert das Arbeiten echt enorm! Vielen Dank!
AW: Worksheet.Range.Select --> Fehler 1004
21.03.2007 13:05:37
Hoffi
Hallo,
heißt Deine Tabelle wirklich Tabelle 1? oder vielleicht Tabelle1 (ohne Leerzeichen)?
hier kann das Leerzeichen zu Problemen führen.
Alternativ kannst Du auch Sheets(1) benutzen (1) steht für den Index der Tabelle.
Grüße
Hoffi
Anzeige
Nachtrage: Funktioniert immer noch nicht
21.03.2007 13:46:48
MarkusP123
Hallo zusammen,
leider funktioniert es immer noch nicht. Wenn ich das jetzt im eigentlichen Projekt versuche habe ich folgendes Problem, ich weiß zwar woran es jetzt liegt aber ich kann es nicht lösen:
Es sind zwei VBA-Projekte, nenen wir sie A und B. In A steht ein Verweis auf B (davor war es umgekehrt (habs umgestellt weil ich dachte das könnte vielleicht helfen))
Momentan arbeite ich in A.
Folgender Code funktioniert dort gar nicht:

Worksheets("Summary").Select
Worksheets("Summary").Cells(1, 1).Select
Ich hab auch herausgefunden warum:
Wenn ich schreibe:
MsgBox worksheets(1).Name
und dann worksheets(2) und so weiter
erhalte die Namen aller Arbeitsblätter von Projekte B, aber auf die Arbeitsblätter von Projekt A kann ich nicht zugreifen.
Weiß jemand, wie ich das machen kann?
Ich hoffe meine Beschreibung ist einigermaßen verständlich...
Anzeige
Nachtrage: Funktioniert immer noch nicht
21.03.2007 13:47:17
MarkusP123
Hallo zusammen,
leider funktioniert es immer noch nicht. Wenn ich das jetzt im eigentlichen Projekt versuche habe ich folgendes Problem, ich weiß zwar woran es jetzt liegt aber ich kann es nicht lösen:
Es sind zwei VBA-Projekte, nenen wir sie A und B. In A steht ein Verweis auf B (davor war es umgekehrt (habs umgestellt weil ich dachte das könnte vielleicht helfen))
Momentan arbeite ich in A.
Folgender Code funktioniert dort gar nicht:

Worksheets("Summary").Select
Worksheets("Summary").Cells(1, 1).Select
Ich hab auch herausgefunden warum:
Wenn ich schreibe:
MsgBox worksheets(1).Name
und dann worksheets(2) und so weiter
erhalte die Namen aller Arbeitsblätter von Projekte B, aber auf die Arbeitsblätter von Projekt A kann ich nicht zugreifen.
Weiß jemand, wie ich das machen kann?
Ich hoffe meine Beschreibung ist einigermaßen verständlich...
Anzeige
AW: Nachtrage: Funktioniert immer noch nicht
21.03.2007 13:55:00
Hans
Hallo Markus,
eine saubere Referenzierung ist das A und O.
Wenn Du in verschiedenen Arbeitsmappen arbeitest, musst Du das schön auseinanderhalten. Beispiel für eine saubere Referenzierung:
Dim wksA as Worksheet, wksB as Worksheet
Set wksA = Workbooks("Test1.xls").Worksheets("Eingang")
Set wksB = Workbooks("Test2.xls").Worksheets("Ausgang")
wksA.Range("A1:F10").Copy wksB.Range("F12")
Das Wechseln von Arbeitsmappe zu Arbeitsmappe bzw. von Blatt zu Blatt solltest Du Dir ersparen. Wenn es denn unumgänlich ist - was eigentlich so gut wie nie vorkommt - musst Du vor dem Blattselektieren die Arbeitsmappe aktivieren:
Workbooks("Test1.xls").Activate
Worksheets("Eingang").Select
Range("A1").Select
oder eben Application.GoTo verwenden.
Gruss hans
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehler 1004: Worksheet.Range.Select in VBA beheben


Schritt-für-Schritt-Anleitung

Um den Fehler 1004 bei der Verwendung von Worksheet.Range.Select in VBA zu beheben, folge diesen Schritten:

  1. Arbeitsblatt auswählen: Bevor Du eine Zelle auswählst, stelle sicher, dass Du das richtige Arbeitsblatt aktivierst. Nutze dafür den folgenden Code:

    Worksheets("Tabelle1").Select
  2. Zelle auswählen: Nachdem das Arbeitsblatt aktiviert ist, kannst Du die gewünschte Zelle auswählen:

    Cells(3, 5).Select
  3. Alternative Methode: Eine bessere Praxis ist die Verwendung der Application.GoTo-Methode, um zu einer Zelle zu navigieren, ohne das Arbeitsblatt aktiv zu machen:

    Application.GoTo Worksheets("Tabelle1").Cells(3, 5)
  4. Vermeidung von SendKeys: Vermeide die Verwendung von SendKeys, da es oft zu unerwarteten Ergebnissen führt.


Häufige Fehler und Lösungen

  • Fehler 1004: „Select-Methode des Range-Objekts konnte nicht ausgeführt werden“ tritt auf, wenn Du versuchst, eine Zelle auszuwählen, ohne das Arbeitsblatt zu aktivieren. Stelle sicher, dass das Arbeitsblatt mit Worksheets("Tabelle1").Select aktiviert ist.

  • Falscher Blattname: Überprüfe, ob der Blattname korrekt ist. Excel unterscheidet zwischen „Tabelle 1“ und „Tabelle1“. Verwende die genaue Schreibweise.

  • Indexierung: Wenn Du die Blätter über den Index ansprechen möchtest, nutze Sheets(1) oder Worksheets(1), wobei der Index für die Position des Arbeitsblatts steht.


Alternative Methoden

Wenn Du Probleme mit der Select-Methode hast, kannst Du alternative Ansätze verwenden:

  • Direkte Referenzierung: Anstatt die Zelle auszuwählen, kannst Du direkt mit ihr arbeiten, ohne sie zu aktivieren:

    Worksheets("Tabelle1").Cells(3, 5).Value = "Neuer Wert"
  • Verwendung von Variablen: Definiere eine Variable für das Arbeitsblatt:

    Dim ws As Worksheet
    Set ws = Worksheets("Tabelle1")
    ws.Cells(3, 5).Value = "Neuer Wert"

Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von Range.Select in VBA:

  1. Zelle in einem anderen Blatt auswählen:

    Sub SelectCellInAnotherSheet()
       Worksheets("Tabelle1").Select
       Range("A1").Select
    End Sub
  2. Werte zwischen Arbeitsblättern kopieren:

    Sub CopyValues()
       Dim wsSource As Worksheet
       Dim wsTarget As Worksheet
       Set wsSource = Workbooks("ProjektA.xls").Worksheets("Tabelle1")
       Set wsTarget = Workbooks("ProjektB.xls").Worksheets("Tabelle2")
       wsSource.Range("A1").Copy wsTarget.Range("B1")
    End Sub

Tipps für Profis

  • Vermeide .Select: Versuche, die .Select-Methode zu vermeiden, um den Code effizienter zu gestalten. Nutze stattdessen direkte Referenzen auf die Zellen.

  • Fehlerbehandlung: Implementiere Fehlerbehandlung in Deinen VBA-Code, um unerwartete Fehler zu vermeiden:

    On Error Resume Next
    Worksheets("Tabelle1").Select
    If Err.Number <> 0 Then
       MsgBox "Das Arbeitsblatt existiert nicht!"
       Exit Sub
    End If
    On Error GoTo 0
  • Saubere Referenzierung: Halte den Code sauber und übersichtlich, indem Du klare Variablennamen und Strukturen verwendest.


FAQ: Häufige Fragen

1. Warum erhalte ich immer noch den Fehler 1004, nachdem ich das Arbeitsblatt ausgewählt habe? Es könnte daran liegen, dass das Arbeitsblatt nicht existiert oder der Name falsch geschrieben ist. Überprüfe die Schreibweise des Arbeitsblattnamens.

2. Wie kann ich auf ein Arbeitsblatt in einem anderen Workbook zugreifen? Nutze die vollständige Referenz, um auf das Arbeitsblatt zuzugreifen:

Workbooks("DeineDatei.xls").Worksheets("Tabelle1").Range("A1").Select

3. Was ist die beste Methode, um Zellen in VBA auszuwählen? Die beste Methode ist, die .Select-Methode zu vermeiden und stattdessen direkt mit den Zellen zu arbeiten, wie in den Beispielen gezeigt.

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