2017-07-12 5 views
1

Ich möchte, dass das Programm in Spalte "U34: U99" nach "1" sucht. Auf der Bestellnummer von "1" wurde der Wert in bestimmten Blättern überprüft. Zum Beispiel: Erste "1" (Лист1), Zweite "1" (Лист2) ... Aber der Fehler springt heraus (Laufzeitfehler 424 Objekt erforderlich) in Zeile: Wenn С.Offset (0, -5) .Wert = 1 und ist C.Value = 1 DannOffset verwenden (Laufzeitfehler 424 Objekt erforderlich)

Sub обща() 
    'для ситуации 

    Dim k As Long, n As Long 
    Dim C As Range 
    Dim Diapozon As Range 
    Set Diapozon = Range("U34:U99") 
    k = 0 
    n = 0 
    For Each C In Diapozon.Rows 

    If С.Offset(0, -5).Value = 1 And C.Value = 1 Then 
    k = k + 1 
    If ThisWorkbook.Sheets("Лист" & k & "").Range("R100").Value = 1 Then 
    n = n + 1 
    End If 
    End If 

    Next C 
    MsgBox n 

    End Sub 
+0

Statt 'For Each C In Diapozon.Rows' versuchen' For Each C In Diapozon' – UGP

+0

@UGP, das gleiche Resultat – maxim465

+0

Seltsam, auch wenn i Verwenden Sie '.Rows', was nicht funktioniert, ich bekomme den Fehler nicht und ohne' .Rows' funktioniert es einfach gut. Und Sie sind sicher, dass der Fehler immer noch in der gleichen Zeile ist? – UGP

Antwort

1

das ist etwas, das funktioniert:

Option Explicit 

Sub TestMe() 

    Dim k   As Long 
    Dim n   As Long 
    Dim C   As Range 
    Dim Diapozon As Range 

    Set Diapozon = Range("A1:A10") 

    k = 0 
    n = 0 

    For Each C In Diapozon.Rows 

     If C.Offset(0, 5).Value = 1 And C.Value = 1 Then 
      k = k + 1 
      If ThisWorkbook.Worksheets("Test" & k).Range("B10").Value = 1 Then 
       n = n + 1 
      End If 
     End If 

    Next C 
    Debug.Print n 

End Sub 

ich geändert haben sich die Bereiche, die Arbeitsblatt-Namen und den MsgBox zu einem debug.print. Mögliche Fehler sind, dass Sie sonst eine ListN oder etwas nicht haben ...

+0

Danke! Alles funktioniert. – maxim465

+0

@ maxim465 - cool, herzlichen Glückwunsch :) – Vityata

Verwandte Themen