Si la riga corretta è questa, l'ho scritta a braccio
If Len(vPK & vbNullString) = 0 Then Exit Function
Il problema, non è nello spostare il Bookmark, ma nel fatto che quando vai a scrivere nella TextBox si attiva la transazione di EDIT e, se non la chiudi e tenti di spostare il Bookmark ovviamente si arrabbia...!
ADO non c'entra nulla, è solo DAO in questo caso.
Quindi se la proprietà di Form è DIRTY allora si spiega l'errore... lo riesci a determinare mettendo in Debug Me.Dirty, che significa Transazione aperta o Modifica non salvata...!
In questo caso hai 3 opzioni:
1° SALVI, con DoCmd.RunCommand acCmdSaveRecord
2° Forzi la Proprietà Me.Dirty=False, in teoria perdi le modifiche, ma ti consente di spostarti...
3° Sempre su Evento BeforeUpdate intercetti il Dirty e chiedi all'utente se fare il Commit(salvando) o RollBack(Forzando Cancel=True)
Fai qualche prova...