Objekt unterstützt Eigenschaft/Methode nicht

Bild

Betrifft: Objekt unterstützt Eigenschaft/Methode nicht
von: Rohfleisch
Geschrieben am: 06.10.2015 13:37:24

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 < TopBorder And AverageVal > BotBorder
        AverageVal = WorksheetFunction.Average(RowTracker)
        Set RowTracker = RowTracker.Offset(1)
    Loop
    Do Until AverageVal > TopBorder Or AverageVal < BotBorder
        AverageVal = WorksheetFunction.Average(RowTracker)
        Set RowTracker = RowTracker.Offset(1)
    Loop
    Set RowTracker = RowTracker.Offset(-3)
    Set FindValue = Range("A" & RowTracker.Row)
End Function
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

Bild

Betrifft: AW: Objekt unterstützt Eigenschaft/Methode nicht
von: ChrisL
Geschrieben am: 06.10.2015 14:54:07
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

Bild

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

Bild

Betrifft: AW: Objekt unterstützt Eigenschaft/Methode nicht
von: Luschi
Geschrieben am: 06.10.2015 14:55:12
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

Bild

Betrifft: AW: Objekt unterstützt Eigenschaft/Methode nicht
von: Rohfleisch
Geschrieben am: 06.10.2015 15:22:46
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.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Objekt unterstützt Eigenschaft/Methode nicht"