Leer en inglés

Compartir a través de


Objeto ComboBox (Access)

Este objeto corresponde a un control de cuadro combinado. El control cuadro combinado combina las características de un cuadro de texto y un cuadro de lista. Utilice un cuadro combinado cuando desee tener la opción de escribir un valor o seleccionarlo de una lista predefinida.

Comentarios

Control Herramienta
Control de cuadro combinado Herramienta de cuadro combinado

En la vista Formulario, Microsoft Access no muestra la lista hasta que se hace clic en la flecha del cuadro combinado.

Si tiene activado el Asistente para controles antes de seleccionar la herramienta cuadro combinado, puede crear un cuadro combinado con un asistente. Para activar o desactivar los asistentes para controles, haga clic en la herramienta Asistentes para controles del cuadro de herramientas.

El valor de la propiedad LimitToList determina si se pueden insertar valores que no estén en la lista.

La lista puede ser de una o varias columnas y las columnas pueden aparecer con o sin títulos.

Ejemplo:

En el ejemplo siguiente se muestra cómo usar varios controles ComboBox para suministrar criterios en una consulta.

Private Sub cmdSearch_Click()
    Dim db As Database
    Dim qd As QueryDef
    Dim vWhere As Variant
    
    Set db = CurrentDb()
    
    On Error Resume Next
    db.QueryDefs.Delete "Query1"
    On Error GoTo 0
    
    vWhere = Null
    vWhere = vWhere & " AND [PymtTypeID]=" & Me.cboPaymentTypes
    vWhere = vWhere & " AND [RefundTypeID]=" & Me.cboRefundType
    vWhere = vWhere & " AND [RefundCDMID]=" & Me.cboRefundCDM
    vWhere = vWhere & " AND [RefundOptionID]=" & Me.cboRefundOption
    vWhere = vWhere & " AND [RefundCodeID]=" & Me.cboRefundCode
    
    If Nz(vWhere, "") = "" Then
        MsgBox "There are no search criteria selected." & vbCrLf & vbCrLf & _
        "Search Cancelled.", vbInformation, "Search Canceled."
        
    Else
        Set qd = db.CreateQueryDef("Query1", "SELECT * FROM tblRefundData WHERE " & _
        Mid(vWhere, 6))
        
        db.Close
        Set db = Nothing
        
        DoCmd.OpenQuery "Query1", acViewNormal, acReadOnly
    End If
End Sub

En el ejemplo siguiente se muestra cómo establecer la propiedad RowSource de un cuadro combinado cuando se cargue un formulario. Cuando se muestre el formulario, los elementos almacenados en el campo Departments del cuadro combinado tblDepartment se muestran en el cuadro combinado cboDept.

Private Sub Form_Load()
    Me.Caption = "Today is " & Format$(Date, "dddd mmm-d-yyyy")
    Me.RecordSource = "tblDepartments"
    DoCmd.Maximize  
    txtDept.ControlSource = "Department"
    cmdClose.Caption = "&Close"
    cboDept.RowSourceType = "Table/Query"
    cboDept.RowSource = "SELECT Department FROM tblDepartments"
End Sub

El siguiente ejemplo muestra cómo crear un cuadro combinado enlazado a una columna a la vez que muestra otra. Al configurar la propiedad ColumnCount en 2 se especifica que el cuadro combinado cboDept mostrará las dos primeras columnas del origen de datos especificado por la propiedad RowSource. Cuando se configura la propiedad BoundCount en 1 se especifica que se devolverá el valor almacenado en la primera columna al inspeccionar el valor del cuadro combinado.

La propiedad ColumnWidths especifica el ancho de las dos columnas. Al establecer el ancho de la primera columna en 0in., la primera columna no aparece en el cuadro combinado.

Private Sub cboDept_Enter()
    With cboDept
        .RowSource = "SELECT * FROM tblDepartments ORDER BY Department"
        .ColumnCount = 2
        .BoundColumn = 1
        .ColumnWidths = "0in.;1in."
    End With
End Sub

En el ejemplo siguiente se muestra cómo agregar un elemento a un cuadro combinado enlazado.

Private Sub cboMainCategory_NotInList(NewData As String, Response As Integer)

    On Error GoTo Error_Handler
    Dim intAnswer As Integer
    intAnswer = MsgBox("""" & NewData & """ is not an approved category. " & vbcrlf _
        & "Do you want to add it now?", vbYesNo + vbQuestion, "Invalid Category")

    Select Case intAnswer
        Case vbYes
            DoCmd.SetWarnings False
            DoCmd.RunSQL "INSERT INTO tlkpCategoryNotInList (Category) " & _ 
                         "Select """ & NewData & """;"
            DoCmd.SetWarnings True
            Response = acDataErrAdded
        Case vbNo
            MsgBox "Please select an item from the list.", _
                vbExclamation + vbOKOnly, "Invalid Entry"
            Response = acDataErrContinue

    End Select

    Exit_Procedure:
        DoCmd.SetWarnings True
        Exit Sub

    Error_Handler:
        MsgBox Err.Number & ", " & Err.Description
        Resume Exit_Procedure
        Resume

End Sub

Eventos

Métodos

Propiedades

Vea también

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.