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