Seu problema é que a função IsNumeric()
está retornando true se a célula estiver vazia devido à sua definição. Veja a documentação da função IsNumeric()
aqui
Para verificar se uma célula está vazia, você pode usar a função IsEmpty()
. Você pode ver este link para obter mais informações sobre essa função.
Assim, na sua função, você precisa verificar se a célula não está vazia e se ela contém um valor numérico.
Private Sub CommandButton1_Click()
If IsNumeric(Range("C4").value) And Not IsEmpty(Range("C4")) Then
FinishClear
Else
MsgBox "Please enter Invoice number"
End If
End Sub