Quando você executa um lote de comandos usando o ADODB, acredito que ele execute cada um separadamente. Para forçar a execução do próximo comando, você deve usar o seguinte:
Set rs = rs.NextRecordset()
Alterar o final de sua rotina para o seguinte deve resolver o problema:
Set rs = New ADODB.Recordset
rs.Open SQLStr, cn, adOpenKeyset, adLockOptimistic
Set rs = rs.NextRecordset
MsgBox (rs.Fields(0).Value)