Purtroppo, l'evento LostFocus o Exit, si verificano PRIMA che il Nuovo Controllo, nel tuo caso il Buttton, lo riceva... quindi di fatto non esiste alcun sistema per capire chi lo dovrà prendere, ma in quel momento sai solo che la tua TextBox lo perderà.
La soluzione di fatto non c'è se non gestire il GotFocus di tutti gli altri controlli e su quello controllare se il PreviousControl era la tua textBox...!
Si risolve in questo:
Su tutti i controlli Attivabili nell'Evento "Su Attivato", ad esclusione del Button CLOSE, vai ad inserire =checkTextExit()
Nella Form scrivi una funzione [checkTextExit]
Private Function checkTextExit()
If Screen.PreviousControl is Me!NomeTextBox Then
' Esegui il codice
End If
End Sub
Non è elegantissimo... ma temo non ci sia altro modo, oltre a quanto hai fatto già... che però se non salvi...