Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Methode Range für Objekt global fehlgeschlagen

Methode Range für Objekt global fehlgeschlagen
Chris
Hi,
bekomme die Fehlermeldung 1004 "Die Methode 'Range' ist für das Objekt '_Global' fehlgeschlagen" bei folgender Zeile meines Codes.
nachfrage = Range("AE" & maxzeile1) 'Produkt der maxzeile wird ausgewählt
Woran liegt die Fehlermeldung?
Code ausführlicher:
Range("AF161").Select ' Zelle AF161 für erstes Nachfragefeld auswählen
aktrow = ActiveCell.Column ' aktuelle Spalte ermitteln
aktzeile = ActiveCell.Row ' aktuelle Zeile ermitteln
Do While ActiveCell "" ' führe aus solange aktuelle Zelle nicht leer ist
maxw = Worksheets.Application.Max(Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(2, 0))) 'Range: Maximalwert ermitteln bis 2 Spalten unten drunter
maxaus = Worksheets.Application.Max(Range(ActiveCell.Offset(3, 0), ActiveCell.Offset(5, 0))) 'Range: höchste Auslastung ab 3 Spalten bis 5 Spalten unten drunter
If ActiveCell.Offset(0, 0) = maxw Then maxzeile = ActiveCell.Row 'Zeile mit Maximalwert ermitteln
If ActiveCell.Offset(1, 0) = maxw Then maxzeile = ActiveCell.Row + 1
If ActiveCell.Offset(2, 0) = maxw Then maxzeile = ActiveCell.Row + 2
If ActiveCell.Offset(3, 0) = maxaus Then maxzeile1 = ActiveCell.Row + 3 'Zeile mit höchster Auslastung ermitteln
If ActiveCell.Offset(4, 0) = maxaus Then maxzeile1 = ActiveCell.Row + 4
If ActiveCell.Offset(5, 0) = maxaus Then maxzeile1 = ActiveCell.Row + 5
nachfrage = Range("AE" & maxzeile1) 'Produkt der maxzeile wird ausgewählt
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Methode Range für Objekt global fehlgeschlagen
05.01.2010 12:25:55
Ramses
Hallo
Vielleicht hat deine Variable "maxzeile1" gar keinen Wert ?
Geh das Makro doch mal mit F8 im Einzelschritt durch und bevor du die benannte Zeile mit F8 ausführst fahr mal mit der Maus über die Variable und schau dir den Wert an.
Wenn dir das zu kompliziert ist, dann bau vor dieser Zeile diesen Code ain
Msgbox "Der maximale Wert = " & maxzeile1
und schau was dann angzeigt wird
Gruss Rainer
Anzeige
AW: Methode Range für Objekt global fehlgeschlagen
05.01.2010 12:44:09
Chris
Ja, maxzeile1 bleibt leer.
Aber maxzeile bspw. nimmt einen Wert an (161)?!?
AW: Methode Range für Objekt global fehlgeschlagen
05.01.2010 12:48:48
Ramses
Hallo
Ich kann nicht hellsehen, ... aber dann geht deine Prüfung
maxaus = Worksheets.Application.Max(Range(ActiveCell.Offset(3, 0), ActiveCell.Offset(5, 0)))
vielleicht schon in die Hose oder die Prüfung
If ActiveCell.Offset(3, 0) = maxaus Then maxzeile1 = ActiveCell.Row + 3
ist fehlerhaft.
Da musst du halt mal Schritt für Schritt nachsehen
Gruss Rainer
Anzeige
AW: Methode Range für Objekt global fehlgeschlagen
05.01.2010 12:51:48
Chris
Du hast recht. Sorry, ganz doofer Fehler:
maxaus hat schon keinen Wert angenommen, da maxaus als Long deklariert war. Die Werte von maxaus sind allerdings Dezimalzahlen
;
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: Methode Range für Objekt Global fehlgeschlagen


Schritt-für-Schritt-Anleitung

Um den Laufzeitfehler 1004 "Die Methode 'Range' ist für das Objekt '_Global' fehlgeschlagen" zu beheben, folge diesen Schritten:

  1. Überprüfe die Variablen: Stelle sicher, dass alle Variablen, die du verwendest, korrekt deklariert und initialisiert sind. In deinem Fall könnte maxzeile1 leer sein, was zu dem Fehler führt.

    Dim maxzeile1 As Long
  2. Debugging verwenden: Nutze die F8-Taste, um das Makro Schritt für Schritt durchzugehen. Wenn du mit der Maus über maxzeile1 fährst, kannst du den aktuellen Wert sehen.

  3. Fehlermeldungen einfügen: Füge eine MsgBox ein, um den Wert von maxzeile1 vor der problematischen Zeile anzuzeigen:

    MsgBox "Der maximale Wert = " & maxzeile1
  4. Maximalwerte prüfen: Überprüfe die Zeilen, die den maximalen Wert ermitteln. Achte darauf, dass die Bereiche korrekt sind und dass maxaus den richtigen Wert annehmen kann.

  5. Korrektur der Berechnung: Stelle sicher, dass die Berechnung für maxaus die richtigen Zellen berücksichtigt. Wenn maxaus als Long deklariert ist, aber Dezimalzahlen erwartet werden, ändere den Datentyp entsprechend.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn Excel VBA die angegebene Range nicht finden kann. Überprüfe die Syntax und den Kontext der Range-Referenz.

  • Leere Variablen: Wenn du eine leere Variable wie maxzeile1 verwendest, kann dies zu dem Fehler führen. Stelle sicher, dass alle Variablen ordnungsgemäß gesetzt sind.

  • Falsche Referenzierung: Achte darauf, dass du die Range innerhalb des korrekten Arbeitsblatts referenzierst. Bei Verwendung von Range ohne spezifisches Arbeitsblatt wird standardmäßig auf das aktive Blatt zugegriffen.


Alternative Methoden

Anstatt Range zu verwenden, kannst du auch Cells verwenden, um auf spezifische Zellen zuzugreifen. Dies kann in einigen Fällen helfen, den Fehler zu vermeiden.

nachfrage = Cells(maxzeile1, 31).Value ' 31 entspricht Spalte AE

Diese Methode kann besonders nützlich sein, wenn du mit dynamischen Zeilen und Spalten arbeitest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie du einen Laufzeitfehler vermeiden kannst:

Sub Beispiel()

    Dim maxzeile1 As Long
    Dim maxwert As Double

    ' Beispielwerte setzen
    maxzeile1 = 10 ' Angenommene Zeile
    maxwert = 100.5 ' Angenommener Maximalwert

    ' Wert aus der Range abrufen
    MsgBox "Der Wert in AE" & maxzeile1 & " ist: " & Range("AE" & maxzeile1).Value

End Sub

In diesem Beispiel wird sichergestellt, dass die Variable maxzeile1 einen gültigen Wert hat, bevor sie in der Range verwendet wird.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren und hilft, Tippfehler zu vermeiden.

  • Fehlerbehandlung einfügen: Nutze On Error Resume Next oder On Error GoTo für eine bessere Fehlerbehandlung in deinem VBA-Code.

  • Nutze lokale Variablen: Vermeide globale Variablen, wenn möglich, um den Code übersichtlicher und weniger fehleranfällig zu gestalten.


FAQ: Häufige Fragen

1. Was bedeutet der Fehler "Die Methode 'Range' ist für das Objekt '_Global' fehlgeschlagen"? Dieser Fehler tritt auf, wenn Excel VBA nicht auf die angegebene Range zugreifen kann, oft aufgrund einer leeren oder ungültigen Variablen.

2. Wie kann ich sicherstellen, dass meine Variablen Werte haben? Verwende Debugging-Tools wie MsgBox oder schaue dir die Werte im Debugger an, um sicherzustellen, dass die Variablen korrekt gesetzt sind.

3. Was kann ich tun, um Laufzeitfehler zu vermeiden? Achte darauf, dass alle Variablen deklariert sind, verwende Option Explicit, und überprüfe die Logik deines Codes sorgfältig.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige