Prima cosa, se la variabile deve essere valida a livello di classe non devi dichiararla dentro al metodo... Lo Scope della tua variabile è solo all'interno del metodo
Nell'altro metodo il problema è che esegui il command prima di averne inserito la logica
Dim ComandoSql As New SqlCommand
ComandoSql = New SqlCommand(QuerySql, objconnection)
'ComandoSql.ExecuteNonQuery() <---NON QUI
If ondb = False Then
QuerySql = "INSERT INTO TbContatti (Indirizzo,Ragione sociale) VALUES ("
QuerySql = QuerySql & "’" & indirizzo & "’,"
QuerySql = QuerySql & "’" & ragione & "',"
End If
ComandoSql.ExecuteNonQuery() '<--- QUI
In ultimo, per creare dei Command, soprattutto se usi SQL ti consiglio di dare un occhio all'utilizzo dei parametri, ti risparmieranno tanti mal di pancia e sono sicuramente più performanti e sicuri.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole