Option Explicit
Sub insertRows()
Const CriteriaRange As String = "A1:B100"
Const CriteriaValue As Double = 300
Dim FirstRow As Long
FirstRow = Range(CriteriaRange).Row
Dim LastRow As Long
LastRow = FirstRow + Range(CriteriaRange).Rows.Count - 1
Dim FirstColumn As Long
FirstColumn = Range(CriteriaRange).Column
Dim SecondColumn As Long
SecondColumn = FirstColumn + 1
' To successfully prevent skipping rows,
' you have to loop from the last to the first row.
Dim i As Long
For i = LastRow To FirstRow Step -1
' I prefer 'VarType', but 'IsNumeric' is another option.
If VarType(Cells(i, "A")) = vbDouble _
And VarType(Cells(i, "B")) = vbDouble Then
If Cells(i, FirstColumn).Value - Cells(i, SecondColumn).Value _
< CriteriaValue Then
Rows(i + 1).Insert
End If
End If
Next i
End Sub