No entiendo la asignación que haces de la variable "dato" (no sé para que pones UPDATE y SET en un parámetro de una sentencia OPEN)
dato = "UPDATE usuario SET RFC = ('" & rfc2 & "') WHERE (usuario.idus =('" & txtclveus.Text & "')))"
rstaux.Open dato, conecta4, adOpenDynamic, adLockOptimistic
Desde mi punto de vista debieras hacer..:
dato = "SELECT ..... FROM ..... WHERE"
rstaux.Open dato, conecta4,....,.....
Abres los registros en el RecordSet RstAux, si acaso agregas registros
rstaux.AddNew
...... asignas valores a los campos que abriste
rstaux.Update
Si acaso editas registros, al momento de abrir el recordset ya sea que hagas una búsqueda (método FIND) o que tu select sea de un solo registro o edites el último o primero
...... asignas valores a los campos que abriste
rstaux.Update
Y listo.... el registro agregado o editado tiene que quedar ya grabado...
Hasta ahora no había visto usar el método OPEN con algo que llevara "update... o set...." por eso el error que el controlador no admite las propiedades UPDATE y SET... en mi caso uso ACCESS, al menos que lo que tu uses (MySQL) si permita usar esas propiedades (UPDATE y SET) en el método OPEN
Suerte...