Yo normalmente lo ejecuto con una instrucción UPDATE de SLQ y no con el .Update del recordset, sobre todo porque creo que estás trabajando con ADODBC.
Prueba esta sentencia realizando antes una copia de seguridad de los datos, por lo que pudiera suceder.
Código:
rsMantencionListas.Open "UPDATE [Mantencion Listas Precios] SET Vigente='No', Hasta=" + cstr(CDate(Text3) - 1) + "WHERE Rubro = '" & Label2 & "' And [Asociado a:] = '" & DataCombo1 & "' And Vigente = 'Si'", Conexion, adOpenStatic, adLockOptimistic
Lógicamente deberías verificar la construcción de la cadena, pues yo pongo lo mismo que tu tienes, pero no puedo comprobar que se encuentre libre de errores.
PD: Mala costumbre es poner nombres de campos y tablas con espacios. Acostumbra a definirlos de forma continuada, pues aveces SQL no digiere bien los tipos como [Mantencion Listas Precios]. Es mejor poner Mantencion_Lista_Precios o MantencionListaPrecios.