Objeto ComboBox (Access)

Este objeto corresponde a um controle de caixa de combinação. O controle da caixa de combinação combina os recursos de uma caixa de texto e de uma caixa de listagem. Use uma caixa de combinação quando quiser ter a opção de digitar um valor ou de selecionar um valor de uma lista predefinida.

Comentários

Controle Mal-Intencionado
Controle de caixa de combinação Ferramenta de caixa de combinação

No modo Formulário, o Microsoft Access não exibirá a lista até você clicar na seta da caixa de combinação.

Se você tiver Assistentes de Controle ativados antes de selecionar a ferramenta da caixa de combinação, será possível criar uma caixa de combinação com um assistente. Para ativar ou desativar Assistentes de Controle, clique na ferramenta Assistentes de Controle na caixa de ferramentas.

A configuração da propriedade LimitToList determina se você pode inserir valores que não estejam na lista.

A lista pode ter uma ou várias colunas, e as colunas podem aparecer com ou sem títulos.

Exemplo

O exemplo a seguir mostra como usar vários controles ComboBox para fornecer critérios para uma 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

O exemplo a seguir mostra como definir a propriedade RowSource de uma caixa de combinação quando um formulário é carregado. Quando o formulário for exibido, os itens armazenados no campo Departments da caixa de combinação tblDepartment serão exibidos na caixa de combinação 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

O exemplo a seguir mostra como criar uma caixa de combinação que está associada a uma coluna enquanto exibe a outra. Configurar a propriedade NúmeroDeColunas para 2 especifica que a caixa de combinação cboDept exibirá as duas primeiras colunas da fonte de dados especificado pela propriedade OrigemDaLinha. Configurar a propriedade BoundColumn para 1 especifica que o valor armazenado na primeira coluna será retornado quando inspecionar o valor da caixa de combinação.

A propriedade LargurasDasColunas especifica a largura das duas colunas. Ao definir a largura da´primeira coluna para 0in., a primeira coluna não é exibida na caixa de combinação.

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

O exemplo a seguir mostra como adicionar um item a uma caixa de combinação associada.

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

Propriedades

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.