muchas cosas hay que corregir en ese codigo, para optimizarlo, te puede quedar menos de la mitad de lo que es ahora.
1 - la conexion normalmente no se abre cada vez que abris el form, esta se habre una sola vez en toda la vida del programa, y se descarga al final.tambien se deberia usar como principio de la conexion , el Sub_Main de un modulo.
2 - estas haciendo duplicidad de codigo bastante seguido, cuando habilitas y deshabilitas controles, eso lo podes poner fijo en un Sub y llamarlo con el valor que vos le pases "True" o "False, y te ahorras todas esas lineas de codigo que es lo que hace el programa "feo".
3 - si ese es el programa, te diria que cambies YA por hacerlo sin ADODC...o sea seguis usando ADO, pero desde codigo , sin objetos, te va a ser mucho mejor mantenerlo despues si se agranda el sistema y aparte porque es lo mejor.
4 - olvidate de hacer eso de ir navegando con las flechitas por los registros, lo mejor es poner una grilla donde esten todos los registros, y si queres al lado unos filtros para que el usuario filtre la grilla por lo que quiera.y despues al hacer doble click sobre un registro de la grilla que se levante una ventana con los datos de ese cliente y que puedas editarlos desde ahi.
5 - tambien es mejor olvidarte de usar los metodos del recordset para insertar en la base .Delete, .AddNew..etc...usa el lenguaje SQL haciendo "DELETE FROM...", "INSERT INTO...", "UPDATE Tabla SET..." a la base directamente, para eso declaras un objeto Command y lo usas en todo el programa para hacer eso.
para aprender es mejor ver un programa ya hecho, por eso creo que con que le peges un vistaso a este ejemplo(que yo diria que es "basico" ), podes empezar a encarar las cosas de otras manera y hacer tu programa muchisimo mejor, mirate este ejemplo de ABM:
Formulario ABM con Access y Adosaludos.