Törölt nick Creative Commons License 2010.06.17 0 0 12073
Szerintem erre a lassú de biztos (favágós) módszer az lenne, ha a vizsgált tartomány minden celláját ellenőriznénk negatív értékre:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Rng1 As Range, c As Range
With ThisWorkbook.Sheets("Munka1")
Set Rng1 = Union(.Range("C5:C15"), .Range("F8:F300"))
For Each c In Rng1
If c < 0 Then
MsgBox "A bevitt adat nem megfelelő, mert a Munka1 lap " & c.Address & " cellája mínuszba került. "
Exit Sub
End If
Next
End With
End Sub

Ha több munkalapon kell tartományokat figyelni, akkor lehet Rng2, Rng3, stb tartományokat definiálni, és mindre külön ciklus, ami végignézi őket.

Valamivel gyorsabb, és szerintem jó módszer, ha csak a vizsgált tartomány minimumát ellenőrzöm. Ha a C5:C15 számok bármelyike negatív, akkor ugyanezen számok legkisebbike is negatív.
Tehát:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Rng1 As Range
With ThisWorkbook.Sheets("Munka1")
Set Rng1 = Union(.Range("C5:C15"), .Range("F8:F300"))
If Application.WorksheetFunction.Min(Rng1) < 0 Then
MsgBox "A bevitt adat nem megfelelő, mert a Munka1!" & Rng1.Address(False, False) & _
" tartomány legalább egy cellája mínuszba került. "
End If
End With
End Sub
Előzmény: Delila_1 (12072)