Cambiar macro por vba ACCESS

Quería saber si se puede sustituir una macro por un comando vba que realice la misma función.

Tengo un formulario con un cuadro combinado que busca los datos en la tabla matriculas, y en Después de actualizar tengo esta macro en Encontrar registro:

="[id_matricula] = " & Str(Nz([Screen].[ActiveControl];0))

¿Hay alguna opción en vba que realice lo mismo?

¿Dónde habría que colocar dicho comando?

... ¿Y qué es mejor comandos con macros o con vba?

3 Respuestas

Respuesta
2

No lo dude es mejor VBA que macros.

Puede hacerlo de 2 formas dependiendo la versión de Access.

1. Access 2003 y 2007

 Private Sub lstMatricula_Click()
    ' Buscar el registro que coincida con el control.
     Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[id_matricula] = " & Str(Me.lstMatricula)
     Me.Bookmark = rs.Bookmark
End Sub

2. Access 2010 superiores

Private Sub lstMatricula_Click()
 DoCmd.SearchForRecord , "", acFirst, "[id_matricula] = " & Str(Nz(Screen.ActiveControl, 0))
End Sub

Juan Pablo se me olvidó aclararle que el código va es en el evento Después de Actualizar del cuadro combinado.

Nunca una macro supera el código es una gran mentira. Ya la respuesta fue dada y responden algo para que "no lo deje el tren"

Respuesta
1

Como tengo tu correo te envío un ejemplo de otra forma de hacerlo.

Dicho esto, una macro no deja de ser un trozo de código VB, para hacer cosas sencillas al que le han puesto un nombre en "cristiano", Pero si en vista diseño del formulario pulsas el botón que hay arriba a la derecha Convertir macros... te transforma la macro en procedimiento de evento.

Respuesta
1

Las macros trabajan a un nivel diferente al VBA por eso coexisten.

En este caso la macro supera al código porque la macro actúa sobre cualquier campo, el código que han proporcionado, solo actúa con el objeto al que se le activa el evento.

Macro ==>> filtra en cualquier campo
Código ==>> solo en ese campo 

Estoy esperando a una función que emule a la macro Autoexec o AutoKeys y/o para aplicaciones en la nube donde VBA no esta permitido y si las macros, las macros trabajan a nivel global de la aplicación (muy útil crear un grupo de macros y sin detener la ejecución del programa, interactuar con el obteniendo resultados y mucho mas).

Por ello no puedo estar de acuerdo con ese ninguneo.

Un buen programador utiliza todos los recursos de la aplicación (aunque no sea su favorita) en la procura de obtener el rendimiento optimo, los que solo conocen superficialmente la aplicación con la que trabajan siempre obtendrán resultados mediocres.

Para saber hay que dedicar tiempo al aprendizaje y no conformarse con algo que funciona y despreciar a lo que se ignora.

Hay 'mas cosas' del lado de lo desconocido que en el lado de lo conocido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas