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

Objektvariable oder With-Blockvariable nicht festg

Forumthread: Objektvariable oder With-Blockvariable nicht festg

Objektvariable oder With-Blockvariable nicht festg
Brand
Hallo VBA-Experte
Ich habe versucht, die Daten in der Auswahlliste zu sortieren und danach zu zählen. Es zeigt immer die Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt" bei Austesten des Programms oder wenn es funktioniert, der Wert von k ist immer bei 0 und hat sich nicht geändert. Meine Meinung nach liegt der Fehler bei der Deklaration von FoundCell .
Ich habe seit heute Morgen versucht, andere Möglichkeiten zu suchen oder Lösung für dieses Problem zu finden. Ich kann aber bis jetzt keine Lösung für dieses Problem finden und bin momentan wirklich am Verzweifeln.
Für jede Hilfe bin ich sehr sehr dankbar.
Viele Grüße,
BM
Hier ist die Syntax:
Sub Status(ByVal zahl As Integer, zahl2 As String)
Application.ScreenUpdating = False
Dim dat_start As Double
Dim dat_ende As Double
Dim Blatt1 As Object: Set Blatt1 = Sheets("xxx")
Dim Blatt2 As Object
Dim FoundCell As Range
Dim LastCell As Range
Dim FirstAddr As String
If zahl = 0 Then
Set Blatt2 = Sheets("yyy")
ElseIf zahl = 1 Then
Exit 

Sub 'Syntax für das Blatt "reaktive Prüfung / kritische Teile"
End If
dat_start = CDbl(DateValue(DMA))
dat_ende = CDbl(DateValue(DME))
Blatt2.Select
With Selection
.AutoFilter Field:=14, Criteria1:=">=" & dat_start, Operator:=xlAnd, Criteria2:=" 0 Then
Worksheets("xxx").OLEObjects("D_" & zahl2).Object.Caption = CStr(k)
Worksheets("xxx").OLEObjects("D_" & zahl2).Object.BackColor = &HFF&
End If
Worksheets("xxx").Select
Application.ScreenUpdating = True
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Objektvariable oder With-Blockvariable nicht festg
02.05.2011 16:24:45
Hajo_Zi
Halo Morkowitz,
Du solltest alle Variablen Definieren.
Nur wenige sehe Deine Datei.
Das liest ja ja so als ob die Objekte hier
        Worksheets("xxx").OLEObjects("D_" & zahl2).Object.Caption = "OK"
Worksheets("xxx").OLEObjects("D_" & zahl2).Object.BackColor = &HC000&
ElseIf K > 0 Then
Worksheets("xxx").OLEObjects("D_" & zahl2).Object.Caption = CStr(K)
Worksheets("xxx").OLEObjects("D_" & zahl2).Object.BackColor = &HFF&

nicht vorhanden sind.

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fehlerbehebung: Objektvariable oder With-Blockvariable nicht festgelegt in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Fehler "Objektvariable oder With-Blockvariable nicht festgelegt" in Excel VBA zu beheben, folge diesen Schritten:

  1. Variablen deklarieren: Stelle sicher, dass alle Objekte korrekt deklariert sind. Zum Beispiel:

    Dim Blatt1 As Worksheet
    Set Blatt1 = ThisWorkbook.Sheets("xxx")
    Dim Blatt2 As Worksheet
    Set Blatt2 = ThisWorkbook.Sheets("yyy")
  2. Zuweisungen überprüfen: Achte darauf, dass alle Objekte, die du verwendest, tatsächlich existieren. Wenn du z.B. auf ein OLEObject zugreifst, stelle sicher, dass es im entsprechenden Blatt vorhanden ist.

  3. Fehlerbehandlung einbauen: Implementiere eine einfache Fehlerbehandlung, um festzustellen, wo genau der Fehler auftritt:

    On Error Resume Next
    Set FoundCell = Blatt1.Range("A1") ' Beispielbereich
    If FoundCell Is Nothing Then
       MsgBox "Die Zelle wurde nicht gefunden."
    End If
    On Error GoTo 0
  4. Mit Block verwenden: Wenn du mit einem Objekt arbeitest, verwende den With-Block, um den Code leserlicher zu gestalten:

    With Worksheets("xxx").OLEObjects("D_" & zahl2).Object
       .Caption = "OK"
       .BackColor = &HFF&
    End With

Häufige Fehler und Lösungen

  • Fehlende Objekte: Der häufigste Grund für die Fehlermeldung ist, dass das angegebene Objekt nicht existiert. Überprüfe, ob das Blatt oder das OLEObject korrekt benannt ist.

  • Falsche Zuweisungen: Achte darauf, dass du die Objekte korrekt zuweist. Fehler in den Blattnamen oder der Objektbezeichnung führen oft zu diesem Problem.

  • Vergessen von Set: Bei der Zuweisung von Objekten ist es wichtig, Set zu verwenden. Ein Beispiel:

    Set FoundCell = Blatt1.Range("A1")

Alternative Methoden

Falls du weiterhin Probleme mit der objektvariable oder with-blockvariable nicht festgelegt Fehlermeldung hast, kannst du folgende alternative Ansätze ausprobieren:

  • Debugging mit Debug.Print: Füge Debug.Print-Anweisungen ein, um sicherzustellen, dass der Code bestimmte Punkte erreicht und welche Werte die Variablen haben.

  • Verwendung von If Not: Du kannst die Existenz von Objekten auch mit einer einfachen Bedingung überprüfen:

    If Not FoundCell Is Nothing Then
      ' Code ausführen
    End If

Praktische Beispiele

Hier sind einige Beispiele, wie du die oben genannten Lösungen in der Praxis umsetzen kannst:

Sub Beispiel()
    Dim ws As Worksheet
    Dim obj As OLEObject

    On Error Resume Next
    Set ws = ThisWorkbook.Sheets("MeinBlatt")
    Set obj = ws.OLEObjects("MeinObjekt")
    On Error GoTo 0

    If Not ws Is Nothing And Not obj Is Nothing Then
        With obj.Object
            .Caption = "Beispiel"
            .BackColor = &HFF&
        End With
    Else
        MsgBox "Das Blatt oder Objekt existiert nicht."
    End If
End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Implementiere eine robuste Fehlerbehandlung in deinem Code, um die Ursachen von Problemen schneller zu identifizieren.

  • Nutze die Immediate Window: Verwende die Immediate Window in der VBA-Umgebung, um Variablen schnell zu überprüfen und Debugging-Anweisungen auszuführen.

  • Kenne die Unterschiede zwischen Dim und Static: Achte darauf, ob du eine Variable nur lokal oder über mehrere Aufrufe hinweg behalten möchtest.


FAQ: Häufige Fragen

1. Was bedeutet die Fehlermeldung "Objektvariable oder With-Blockvariable nicht festgelegt"?
Diese Meldung tritt auf, wenn du versuchst, auf ein Objekt zuzugreifen, das nicht korrekt zugewiesen wurde.

2. Wie kann ich sicherstellen, dass meine Objekte existieren?
Verwende eine Wenn-Anweisung, um zu überprüfen, ob das Objekt Nothing ist, bevor du darauf zugreifst.

3. Warum sollte ich With-Blöcke verwenden?
With-Blöcke machen den Code leserlicher und reduzieren die Anzahl der benötigten Zeilen, um auf die Eigenschaften eines Objekts zuzugreifen.

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