Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
La función de Visual Basic que cree debe aceptar cinco argumentos. El primer argumento se debe declarar como control y los restantes como Variant. La propia función debe devolver una Variant.
Functionfunctionname (fldAs Control, idAs Variant, rowAs Variant, colAs Variant, codeAs Variant) As Variant
El procedimiento Function tiene los siguientes cinco argumentos requeridos.
| Argumento | Descripción |
|---|---|
| Fld | Una variable de control que hace referencia al cuadro de lista o cuadro combinado que se está rellenando. |
| id | Un valor único que identifica el control que se rellena. Esto es útil cuando se desee utilizar la misma función definida por el usuario para más de un cuadro de lista o cuadro combinado y sea necesario distinguir entre ellas. (El ejemplo establece esta variable al valor de la función Cronómetro (Timer)). |
| fila | La fila que se está rellenando (basado en ceros). |
| col | La columna que se está rellenando (basado en ceros). |
| code | Una constante intrínseca que especifica la clase de información que se pide. |
Nota:
Puesto que Microsoft Access llama a una función definida por el usuario varias veces para insertar elementos en una lista, a menudo es necesario preservar la información de una llamada a otra. La mejor forma de hacer esto es utilizar variables Static.
Microsoft Access llama repetidamente a la función definida por el usuario utilizando valores diferentes en el argumento código para especificar la información que necesita. El argumento código puede utilizar las siguientes constantes intrínsecas.
| Constante | Significado | Valor devuelto por la función |
|---|---|---|
| acLBInitialize | Initialize | No-cero si la función puede rellenar la lista; False (0) o Nulo en caso contrario. |
| acLBOpen | Abrir | Valor de Id. no-cero si la función puede rellenar la lista; Falso o Nulo en caso contrario. |
| acLBGetRowCount | Número de filas | Número de filas de la lista (puede ser cero); -1 si se desconoce. |
| acLBGetColumnCount | Número de columnas | Número de columnas en la lista (no puede ser cero); debe coincidir con la configuración de la hoja de propiedades. |
| acLBGetColumnWidth | Ancho de la columna | Ancho (en twips) de la columna especificada por el argumento col ; -1 para usar el ancho predeterminado. |
| acLBGetValue | Entrada de lista | Entrada de la lista para ser mostrada en la fila y columna especificada por los argumentos fila y col. |
| acLBGetFormat | Cadena de formato | Dar formato a la cadena que se va a usar para dar formato a la entrada de lista que se muestra en la fila y la columna especificadas por los argumentos row y col ; -1 para usar el formato predeterminado. |
| acLBEnd | Fin (la última llamada a una función definida por el usuario siempre utiliza este valor) | Nada. |
| acLBClose | (No usado) | No se usa. |
Access llama a la función definida por el usuario una vez para acLBInitialize, acLBOpen, acLBGetRowCount y acLBGetColumnCount. Inicializa la función definida por el usuario, abre la consulta y determina el número de filas y columnas.
Access llama a la función definida por el usuario dos veces para acLBGetColumnWidth, una vez para determinar el ancho total del cuadro de lista o cuadro combinado y una segunda vez para establecer el ancho de columna.
El número de veces que la función definida por el usuario es llamada por acLBGetValue y acLBGetFormat para obtener las entradas de la lista y para dar formato a las cadenas de formato varía dependiendo del número de entradas, el desplazamiento del usuario y otros factores.
Access llama a la función definida por el usuario para acLBEnd cuando se cierra el formulario o cada vez que se consulta el cuadro de lista o el cuadro combinado.
Cada vez que se requiere un valor determinado (como el número de columnas), devolver Null o cualquier valor no válido hace que Access deje de llamar a la función definida por el usuario con ese código.
Sugerencia
Use la estructura de código Seleccionar caso del ejemplo como plantilla para sus propias funciones definidas por el usuario de la propiedad RowSourceType .
Ejemplo
La siguiente función definida por el usuario devuelve una lista de los siguientes cuatro Lunes que siguen a la fecha de hoy. Para llamar a esta función desde un control cuadro de lista, introduzca ListarLunes como el valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType) y deje en blanco el valor de la propiedad OrigenDeLaFila (RowSource).
Public Function ListMondays(fld As Control, id As Variant, _
row As Variant, col As Variant, code As Variant) _
As Variant
Dim Offset As Integer
Dim WeekdayDate As Date
Select Case code
Case acLBInitialize ' Initialize.
ListMondays = True
Case acLBOpen ' Open.
ListMondays = Timer ' Unique ID.
Case acLBGetRowCount ' Get rows.
ListMondays = 4
Case acLBGetColumnCount ' Get columns.
ListMondays = 1
Case acLBGetColumnWidth ' Get column width.
ListMondays = -1 ' Use default width.
Case acLBGetValue ' Get the data.
Offset = Abs((9 - Weekday(Date)) Mod 7)
WeekdayDate = DateAdd("d", _
Offset + 7 * row, Date)
ListMondays = Format(WeekdayDate, _
"mmmm d")
End Select
End Function
El siguiente ejemplo utiliza una matriz estática para almacenar los nombres de las bases de datos en el directorio actual. Para llamar a esta función, introduzca ListMDBs como el valor de la propiedad TipoDeOrigenDeLaFila (RowSourceType) y deje en blanco el valor de la propiedad OrigenDeLaFila (RowSource).
Public Function ListMDBs(fld As Control, id As Variant, _
row As Variant, col As Variant, code As Variant) _
As Variant
Static dbs(127) As String
Static Entries As Integer
Dim ReturnVal As Variant
ReturnVal = Null
Select Case code
Case acLBInitialize ' Initialize.
Entries = 0
dbs(Entries ) = Dir("*.MDB")
Do Until dbs(Entries) = "" Or Entries >= 127
Entries = Entries + 1
dbs(Entries) = Dir
Loop
ReturnVal = Entries
Case acLBOpen ' Open.
' Generate unique ID for control.
ReturnVal = Timer
Case acLBGetRowCount ' Get number of rows.
ReturnVal = Entries
Case acLBGetColumnCount ' Get number of columns.
ReturnVal = 1
Case acLBGetColumnWidth ' Column width.
' -1 forces use of default width.
ReturnVal = -1
Case acLBGetValue ' Get data.
ReturnVal = dbs(row)
Case acLBEnd ' End.
Erase dbs
End Select
ListMDBs = ReturnVal
End Function
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.