När du kör ett parti kommandon med ADODB tror jag att det körs var och en separat. För att tvinga nästa kommando att köras måste du använda följande:
Set rs = rs.NextRecordset()
Att ändra slutet av din rutin till följande borde göra susen:
Set rs = New ADODB.Recordset
rs.Open SQLStr, cn, adOpenKeyset, adLockOptimistic
Set rs = rs.NextRecordset
MsgBox (rs.Fields(0).Value)