Me alegra mucho tu pregunta; es un desafío clásico de VBA en Access. Entiendo tu obsesión, ya que mover la ventana de Access requiere interactuar directamente con el sistema operativo (Windows) fuera del entorno normal de VBA, y eso requiere el uso de la API de Windows.
El procedimiento que necesitas es muy sencillo de implementar. No es necesario tocar las Referencias en VBA. Solo necesitarás la función api. SetWindowPos y algunas constantes.
Aquí tienes el código completo para implementarlo en un Módulo y luego llamarlo desde el evento Doble Clic de tu cuadro de texto.
1. Módulo estándar VBA
Crea un nuevo Módulo Estándar y pega este código completo. Este código declara las funciones y constantes de la API de Windows.
' =================================================================
' MÓDULO: modAPI
' Contiene las declaraciones de la API de Windows para mover ventanas.
' =================================================================
#If VBA7 Then
' Declaraciones para Access 2010 (Office 64-bit) y posteriores
Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As LongPtr, ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
#Else
' Declaraciones para versiones de Access de 32 bits (generalmente innecesario hoy)
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
#End If
' Constantes de la API
Public Const SWP_NOSIZE = &H1 ' Mantiene el tamaño actual (ancho/alto)
Public Const SWP_NOZORDER = &H4 ' Mantiene la posición en el eje Z (capas de ventanas)
' -----------------------------------------------------------------
' FUNCIÓN PRINCIPAL: Mueve la ventana de Access a la esquina superior
' -----------------------------------------------------------------
Public Sub MoverAccessAEsquina()
Dim hwndAccess As LongPtr ' Manejador de la ventana de Access
Dim xNew As Long ' Nueva posición X (Izquierda)
Dim yNew As Long ' Nueva posición Y (Superior)
' Obtiene el identificador de la ventana activa (la ventana principal de Access)
hwndAccess = GetActiveWindow()
' Establece las coordenadas para la esquina superior izquierda
' (x=0, y=0 es la esquina de la pantalla)
xNew = 0
yNew = 0
' Llama a la API para mover la ventana
' Argumentos: hwnd, hWndInsertAfter (0), x, y, cx (0), cy (0), uFlags
' Usamos SWP_NOSIZE y SWP_NOZORDER para asegurar que solo se cambie la posición (x, y)
Call SetWindowPos(hwndAccess, 0, xNew, yNew, 0, 0, SWP_NOSIZE Or SWP_NOZORDER)
End Sub
2. Implementación en el formulario
Abre el formulario que contiene el cuadro de texto TRASLADO en vista Diseño.
Haz doble clic en el cuadro de texto TRASLADO para abrir su Hoja de Propiedades.
Ve a la pestaña [Evento].
Busca el evento Al hacer doble clic.
Selecciona [Procedimiento de evento] y haz clic en el botón de los tres puntos (...) a la derecha.
Este es el código del evento al hacer doble clic
Private Sub TRASLADO_DblClick(Cancel As Integer)
' Llama a la Subrutina de la API que acabamos de crear en el Módulo Estándar.
Call MoverAccessAEsquina
End Sub
Le explico:
GetActiveWindow(): Obtiene el identificador (hwnd) de la ventana principal de la aplicación Access.
SetWindowPos(): Esta es la función clave. Toma el hwnd de la ventana y le aplica nuevas coordenadas (xNew = 0, yNew = 0).
SWP_NOSIZE / SWP_NOZORDER: Estas banderas le dicen a la función que solo modifique la posición y que ignore los parámetros de tamaño (cx y cy) y la profundidad de la ventana.
Al hacer doble clic en el cuadro de texto TRASLADO, la ventana completa de Access (no solo el formulario) se moverá instantáneamente a la esquina superior izquierda de tu pantalla. ¡Listo!