Hi Kurt,
Welcome to the forum 
Is this the sort of thing you mean:
Sub Test()
Dim rng As Range, lLastRow As Long, rngCell As Range
With Sheets("inventory")
lLastRow = .Cells(Rows.Count, "C").End(xlUp).Row
Set rng = .Range("A2:D" & lLastRow)
rng.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
'do the sort
Set rng = .Range("C2:C" & lLastRow)
lLastRow = 0
For Each rngCell In rng
If rngCell.Value >= 0 Then
lLastRow = rngCell.Row
Exit For
End If
Next rngCell
'find first positive
If lLastRow > 0 Then
Set rng = .Range("C2:C" & lLastRow - 1)
MsgBox rng.Address
End If
'set the negative range
End With
End Sub
Note that it is rarely necessary to select or activate objects in order to work with them - and your code will run much quicker if you can avoid such actions.
HTH