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

Objekt unterstützt Eigenschaft/Methode nicht

Forumthread: Objekt unterstützt Eigenschaft/Methode nicht

Objekt unterstützt Eigenschaft/Methode nicht
06.10.2015 13:37:24
Rohfleisch
Hallo alle zusammen,
folgender Code bereitet mir Kopfzerbrechen:
Option Explicit
Funktion zur Auswahl einer bestimmten Zeile aus einer Liste; Soll ein Range-Objekt oder " _
Adresse"(String) zurückgeben das/der im untenstehenden
Sub verwendet wird

Function FindValue(SP As Integer)
'Dimensionierung
Dim TopBorder As Integer
Dim BotBorder As Integer
Dim RowTracker As Range
Dim AverageVal As Integer
'Prozess
Set RowTracker = Worksheets(1).Range("B2:I2")
TopBorder = SP + 10
BotBorder = SP - 10
Do Until AverageVal  BotBorder
AverageVal = WorksheetFunction.Average(RowTracker)
Set RowTracker = RowTracker.Offset(1)
Loop
Do Until AverageVal > TopBorder Or AverageVal 
Sub MeasurementLine()
'Dimensionierung
Dim SetPoint As Integer
Dim Temperatures As Range
Dim CellVal As Range
Dim MeasLine As Range
'Prozess
Set Temperatures = Range("Temperatures")
For Each CellVal In Temperatures
SetPoint = CellVal.Value
Set MeasLine = FindValue(SetPoint)
Worksheets(1).MeasLine.Value = SetPoint
Next CellVal
End Sub

Nachdem ich die Macro von einem anderen Worksheet aus starten wollte, musste ich die Zeile MeasLine.Value = SetPoint zu Worksheets(1).MeasLine.Value = SetPoint umschreiben. Nun funktioniert sie nicht mehr.
Die größte Hilfestellung wäre für mich eine Erklärung warum das so nicht funktioniert. Eine Lösung würde ich mir mit den gegebenen Hinweisen dann selbst erarbeiten.
Vielen Dank!
Mfg,
Rohfleisch

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Objekt unterstützt Eigenschaft/Methode nicht
06.10.2015 14:54:07
ChrisL
Hi
Nur eine Vermutung. Wenn du nicht referenzierst, bezieht sich der Code auf die aktive Mappe. Da du den Code aus einer anderen Mappe heraus startest, ist vielleicht die falsche Mappe aktiv.
Workbooks("XY").Worksheets(1).Range(...)
Oder
With Workbooks("XY").Worksheets(1)
.Range(...)
End With
cu
Chris

Anzeige
AW: Objekt unterstützt Eigenschaft/Methode nicht
06.10.2015 15:24:51
Rohfleisch
Auch dir vielen Dank!

AW: Objekt unterstützt Eigenschaft/Methode nicht
06.10.2015 14:55:12
Luschi
Hallo Rohfleisch,
das liegt an der teilweise unsauberen Referenzierung der Range-Objekte
'RowTracker' hat als Parent-Objekt die Tabelle 'Worksheets(1)' und ist somit klar.
'FindValue' hat als Parent-Objekt das gerade aktive (sichtbare) Tabellen-Objekt durch
Set FindValue = Range("A" & RowTracker.Row)
Hier fehlt die explizite Zuweisung und deshalb ist es die aktive Tabelle.
Diese Zuweisung wird an 'MeasLine' weiter vererbt durch:
Set MeasLine = FindValue(SetPoint)
Also zeigt 'MeasLine' auf die gleiche Tabelle wie 'FindValue'
Deshalb sollte die fehlerhafte Zeile so lauten:
Worksheets(1).Range(MeasLine.Address).Value = SetPoint
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Objekt unterstützt Eigenschaft/Methode nicht
06.10.2015 15:22:46
Rohfleisch
Vielen Dank für die Hilfe!
Diese Anleitung hat mir mehr als nur bei der Lösung des Problems geholfen. Ich werde ab sofort meine Referenzierung doppelt überdenken ;)
Der Code lautet nun
Set FindValue = Worksheets(1).Range("A" & RowTracker.Row)

und
MeasLine.Value = SetPoint
Das war für mich die "schönere" Lösung.
Grüße aus dem verregneten Heidelberg.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Umgang mit dem Fehler: Objekt unterstützt Eigenschaft/Methode nicht


Schritt-für-Schritt-Anleitung

  1. Verstehe den Fehler: Der Fehler "Objekt unterstützt diese Eigenschaft oder Methode nicht" tritt häufig auf, wenn der Code versucht, auf ein Range-Objekt oder eine Methode zuzugreifen, die nicht existiert oder nicht richtig referenziert wird.

  2. Überprüfe die Referenzierung: Achte darauf, dass du Range-Objekte korrekt referenzierst. Im gegebenen Beispiel ist es wichtig, dass FindValue korrekt auf das entsprechende Worksheet zugreift.

    Beispiel:

    Set FindValue = Worksheets(1).Range("A" & RowTracker.Row)
  3. Anpassungen an der MeasurementLine-Subroutine: Stelle sicher, dass die MeasLine korrekt auf das Worksheet verweist. Ändere die Zeile wie folgt:

    Worksheets(1).Range(MeasLine.Address).Value = SetPoint
  4. Testen: Führe den Code aus und überprüfe, ob der Fehler weiterhin auftritt.


Häufige Fehler und Lösungen

  • Fehler: "Das Objekt unterstützt die Eigenschaft oder Methode IsInteger nicht."

    • Lösung: Überprüfe die Objektzuweisungen und stelle sicher, dass die Variablen korrekt deklariert sind. In VBA kann es hilfreich sein, die Datentypen zu überprüfen.
  • Fehler: Der Code funktioniert nicht, wenn er aus einer anderen Arbeitsmappe gestartet wird.

    • Lösung: Nutze die vollständige Referenzierung, um sicherzustellen, dass der Code auf die richtige Arbeitsmappe zugreift. Beispiel:
      Workbooks("DeineDatei.xlsx").Worksheets(1).Range("...")

Alternative Methoden

  • Verwendung von With: Du kannst den Code lesbarer gestalten, indem du die With-Anweisung verwendest, um mehrere Operationen auf dasselbe Objekt anzuwenden. Beispiel:

    With Worksheets(1)
      .Range(MeasLine.Address).Value = SetPoint
    End With
  • Direkte Zuweisung: Anstatt mehrere Variablen zu verwenden, kannst du direkt auf die Range zugreifen:

    Worksheets(1).Range("A" & RowTracker.Row).Value = SetPoint

Praktische Beispiele

Hier ein Beispiel, wie du den Fehler vermeiden kannst:

Sub MeasurementLine()
    Dim SetPoint As Integer
    Dim Temperatures As Range
    Dim CellVal As Range
    Dim MeasLine As Range
    Set Temperatures = Worksheets(1).Range("Temperatures")

    For Each CellVal In Temperatures
        SetPoint = CellVal.Value
        Set MeasLine = FindValue(SetPoint)
        Worksheets(1).Range(MeasLine.Address).Value = SetPoint
    Next CellVal
End Sub

In diesem Beispiel wird FindValue so definiert, dass es immer auf das richtige Worksheet zugreift, wodurch der Fehler "Objekt unterstützt diese Eigenschaft oder Methode nicht" vermieden wird.


Tipps für Profis

  • Nutze Option Explicit: Durch die Verwendung von Option Explicit am Anfang deines Moduls zwingst du VBA, dass alle Variablen deklariert werden müssen. Dies hilft, Tippfehler zu vermeiden und sorgt für eine bessere Nachvollziehbarkeit des Codes.

  • Debugging nutzen: Setze Haltepunkte in deinem Code und nutze die Debugging-Tools von VBA, um den Fluss deines Programms zu verfolgen. Damit kannst du genau sehen, wo der Fehler auftritt.

  • Dokumentation: Kommentiere deinen Code gut, um die Funktionalität der einzelnen Teile zu erklären. Das erleichtert nicht nur die Wartung, sondern hilft auch anderen, deinen Code zu verstehen.


FAQ: Häufige Fragen

1. Warum erhalte ich den Fehler "Objekt unterstützt diese Eigenschaft oder Methode nicht"? Der Fehler tritt auf, wenn du versuchst, auf eine Eigenschaft oder Methode eines Objekts zuzugreifen, die für das spezifische Objekt nicht verfügbar ist. Überprüfe die Objektzuweisungen und stelle sicher, dass du die richtigen Objekte verwendest.

2. Wie kann ich sicherstellen, dass mein Code in verschiedenen Arbeitsmappen funktioniert? Verwende immer die vollständige Referenzierung für Worksheets und Range-Objekte. Das hilft, Missverständnisse darüber zu vermeiden, welches Worksheet oder Range tatsächlich angesprochen wird.

3. Was ist die empfohlene Methode zur Fehlerbehebung bei VBA-Problemen? Nutze die Debugging-Tools in VBA, setze Haltepunkte und überprüfe die Werte der Variablen während der Ausführung, um den genauen Punkt zu identifizieren, an dem der Fehler auftritt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige