Se passi il valore null al parametro, riceverai questo errore anche dopo aver aggiunto i parametri, quindi prova a controllare il valore e se è nullo usa DBNull.Value
Funzionerà
cmd.Parameters.Add("@Department", SqlDbType.VarChar)
If (TextBox2.Text = Nothing) Then
cmd.Parameters("@Department").Value = DBNull.Value
Else
cmd.Parameters("@Department").Value = TextBox2.Text
End If
Ciò convertirà i valori null dal livello oggetto in valori DBNull accettabili per il database.