Microsoft Excel

Herbers Excel/VBA-Archiv

Range_ object worksheet failed


Betrifft: Range_ object worksheet failed von: Jazz
Geschrieben am: 27.03.2018 10:34:53

Moin moin,

ich habe ein kleines Makro geschrieben, welches mit einem Wert in einer Tabelle (aufsteigend sortiert und auf einem anderen Blatt) die beiden Werte heraussuchen soll, die direkt darueber und darunter liegen. Bspw. ist mein Wert 6500 und aus der Tabelle sollen dann die Werte 6300 und 6600 in mein aktives Blatt uebernommen werden. Das Makro befindet sich auf dem Blatt und nicht in einem Modul.

Das funktioniert soweit auch gut, solange ich das im Einzelschritt mit F8 durchgehe. Wenn ich das Makro ueber F5 laufen lassen moechte, bekomme ich in der fett markierten Zeile die Fehlermeldung "Run-time-error'-2147417848 (80010108)' Method 'Range' of object_worksheet failed".

Ich habe gefuehlt schon google umgegraben und hoffe hier nun auf Hilfe.

Vielen Dank fuer jegliche Muehen!

Sub Draft()

Application.ScreenUpdating = False
Dim lz%, i%, x%, z%, row%, higher%, lower%
Dim weight#, actweight#


'counting rows till last row in draft table
'lz=last row
    
    lz = Worksheets("Data").Cells(1048576, 13).End(xlUp).row - 60

    actweight = Range("Q47") 'actual displacement
    row = 61
    lower = Worksheets("Data").Range("M" & (row)).Value 'lower displacement
    higher = Worksheets("Data").Range("M" & row + 1).Value 'higher displacement
    
    For z = 1 To lz 'check in displacement table between which values the actual displacement   _
_
is
        
        If actweight >= lower Then
               
            If actweight <= higher Then
                Range("Q54").Value = Worksheets("Data").Range("K" & row).Value 
                Range("Q55").Value = Worksheets("Data").Range("K" & row +1).Value
                Exit Sub
            End If
        
        End If
        row = row + 1
        lower = Worksheets("Data").Range("M" & row).Value
        higher = Worksheets("Data").Range("M" & (row + 1)).Value
    Next z
    
    Application.ThisWorkbook.RefreshAll
    Application.ScreenUpdating = True
End Sub 

  

Betrifft: AW: Range_ object worksheet failed von: Luschi
Geschrieben am: 27.03.2018 11:08:31

Hallo Jazz,

kann es sein, das Range("M" & (row)) eine verbundene Zelle ist?

fragt sich Luschi
aus klein-Paris


  

Betrifft: AW: Range_ object worksheet failed von: JoWE
Geschrieben am: 27.03.2018 11:09:43

Hallo Jazz

es wäre schon erhellend zu wissen was da in der Zelle Worksheets("Data").Range("M" & (row)) drin steht, meine Glaskugel will mir das nicht zeigen. Du hast die Variable lower% als Integer-Wert (Ganzzahl) 16 Bit, 2 Bytes dimensioniert (-32.768 ... +32.767). Passt das z.B. mit dem in Zelle M61 vorhandenen Wert zusammen?

Gruß
Jochen


  

Betrifft: AW: Range_ object worksheet failed von: Jazz
Geschrieben am: 27.03.2018 11:51:38

Danke fuer die Antworten.
@Luschi
Nein, die Zelle ist nicht verbunden.

@Jochen
in der Spalte stehen verschiedene Gewichte, die keine Nachkommastellen haben und in dem Bereich von 0-15000 liegen. Ich habe die Variable trotzdem mal als Double definiert und bekomme den gleichen Fehler.

Ich glaube, aber gefunden zu haben, woran es hapert. Ich moechte das Makro bei Aenderung eines bzw. mehrerer Bereiche aufrufen (geht das ueberhaupt mit mehreren Bereichen?). Allerdings ist die Definition des Bereichs nicht korrekt (glaube ich zumindest). Kommentiere ich das worksheet_change Ereignis aus, laeuft das Makro ganz normal. Ich vermute, dass das Ereignis nochmal ausgeloest wird, wenn sich der Wert, als Ergebnis des Makros, sich wieder aendert und dann kommt es zur Fehlermeldung.
Ich muss jedoch gestehen, dass ich mich mit der Syntax absolut nicht auskenne. Bisher sieht das worksheet_change Ereignis wie folgt aus.

'Private Sub worksheet_change(ByVal Target As Range)




If Intersect(Target, Range("B6:B33")) Is Nothing Then

  Call Draft


End If

End Sub