Wenn du sicherstellen möchtest, dass auch ganze Zahlen als Double erkannt werden, könntest du den Wert explizit in einen Double-Typ konvertieren und dann den Datentyp überprüfen.
If VarType(CDbl(cell.Value)) = vbDouble Then
MsgBox "Double"
ElseIf VarType(CInt(cell.Value)) = vbInteger Then
MsgBox "Integer"
Else
MsgBox "Fehler"
End If