Quando si esegue un batch di comandi utilizzando ADODB, credo che venga eseguito ciascuno separatamente. Per forzare l'esecuzione del comando successivo, devi utilizzare quanto segue:
Set rs = rs.NextRecordset()
Cambiare la fine della tua routine a quanto segue dovrebbe fare il trucco:
Set rs = New ADODB.Recordset
rs.Open SQLStr, cn, adOpenKeyset, adLockOptimistic
Set rs = rs.NextRecordset
MsgBox (rs.Fields(0).Value)