Credo serva fare una cosa aggiuntiva... ma è bene spiegare il senso...!
Le azioni da gestire sono 2:
1° Quando modifichi la ListBox, di conseguenza se selezioni Ferie farai quello che hai chiesto sul controllo [Ore_Vacanza]
2° Se scorri i Records, lo stato del controllo [Ore_Vacanza] deve essere aggiornato in base al Valore memorizzato dal Campo associato alla ListBox..., esempio se avevi selezionato Ferie la volta precedente è evidente che, lo stato del Controllo [Ore_Vacanza] va messo a Visible=False, ma non potrai usare l'evento di Modifica(il primo esposto) ma dovrai usare quell'evento che si scatena in Scorrimento Records.
Nel tuo codice poi SPOSTI INUTILMENTE il focus... NON SERVE, ed il codice è semplificabile così:
Private Sub Form_Current()
Me.Ore_Vacanza.Visible = ID_Assenza = "Ferie"
End Sub
Private ID_Assenza_AfterUpdate()
Me.Ore_Vacanza.Visible = ID_Assenza = "Ferie"
End Sub
Trovo tuttavia strano che un Campo Id_Assenza sia di tipo TESTO... quindi forse... quel "Ferie" non è che corrisponde ad un Indice Numerico...?