2016-11-23 5 views
0

Ich muss prüfen, ob der Wert in Zelle "C" größer als 0 ist, aber kleiner als Wert in der vorherigen Zelle "E"., Zum Beispiel, ob der Wert überprüft wird bei Zelle "3C" ist größer als 0, aber kleiner als Wert in Zelle "2E". Ich habe RGB dafür eingesetzt, um die Fehlerzelle rot einzufärben. Ich benutze auch UserForms für die Eingabe.Wenn größer ist als vorherige Zelle an anderer Stelle

Dies ist mein Code in Excel VBA:

X = Cells(j, "C").Value 
    d = Cells(j, "E").Value 
    c = Cells(j, "E-1").Value 
    If X >= c And X < 0 Or X < 0 Or X >= c Then 
      Cells(j, "C").Interior.Color = 255 
      UserForm1.inpBox.Value = j 
      UserForm1.Label1.Caption = (j & ". Row has an error!") 
      UserForm1.Show 
      Cells(j, "C") = UserForm1.inpBox.Value 
      Cells(j, "C").Interior.Color = RGB(255, 255, 255) 
     End If 

Ich weiß, dass es ein Fehler in hier, aber ich kann nicht herausfinden, was für ihn in seinem Platz setzen zu arbeiten:

X = Cells(j, "C").Value 
    d = Cells(j, "E").Value 
    c = Cells(j, "E-1").Value 
    If X >= c And X < 0 Or X < 0 Or X >= c Then 

Antwort

0

Verwenden Range.Offset(rowOffset, colOffset) Methode:

c = Cells(j, "E").Offset(0, -1).Value ' addresses "previous" column 
c = Cells(j, "E").Offset(-1, 0).Value ' addresses "previous" row 
+0

ich dies schrieb und es scheint zu funktionieren. 'c = Cells (j - 1, "E") Value' Was denken Sie über diese Version? –

+0

Dies funktioniert auch, wenn Sie numerische Zeilen und Spalten angeben. Beachten Sie, dass Sie in Ihrem "nicht arbeiten" -Beispiel versuchen, die vorherige * Spalte * '" E-1 "zu adressieren, während Sie in Ihrem Kommentar eins von der * Zeile * subtrahieren. Die Methode "Offset" funktioniert, wenn Sie benannte Bereiche verwenden oder Spalten als Buchstaben bereitstellen. Beide sind gut. –

+0

Vielen Dank! :) –

Verwandte Themen