Dobbiamo fare una premessa.
MsAccess ha 2 Set di Immagini usabili per i CommandButton, ma, per entrambi i set, serve scrivere una discreta quantità di Codice per accedere alle immagini.
1° FaceID, in questo caso non c'è più l'api disponibile per accedere all'immagine da quando hanno implementato la Trasparenza, quindi serve creare una CommandBar, assegnare il FaceID ad un CommandBarControl e, da questo recuperare la proprietà PICTURE ed assegnarla al tuo Button.... passaggio molto inutile.
2° ImageMSO, sono quelle di sistema usare per i Ribbon, per questo, non essendo BMP serve prelevare l'immagine
Set Image = Application.CommandBars.GetImageMso(ImageMSO, 16, 16)
Dobe l'oggetti Image è un IPictureDisp, ma non compatibile con l'array Picture, quindi oltre ad aggiungere l'Header BMP serve convertire il tutto in Array.
La 2° è più complicata, io le ho sviluppate emtrambe, ed entrambe fattibili... ma ti espongo un metodo banale che credo sia meglio.
Metti 2 CommandButton nella Maschera, impostando la proprietà a Visibile=False, ognuno con l'icona selezionata che ti piace.
Quindi avrai [cmdImg1] e [cmdImg2], e, su condizione fai
Me.cmdTuoPulsante.PictureData=IIF(Condizione,Me.cmdImg1.PictureData,Me.cmdImg2.PictureData)
In questo modo il tuo CommandButton [cmdTuoPulsante] cambia immagine a seconda della [condizione] copiando l'immagine da 2 CommandButton FITTIZZI.