ComboBox 物件 (Access)ComboBox object (Access)

此物件對應到下拉式方塊控制項。This object corresponds to a combo box control. 下拉式方塊控制項結合了文字方塊和清單方塊的功能。The combo box control combines the features of a text box and a list box. 當您想要用選項從事先定義的清單來輸入值或選取值時,請使用下拉式方塊。Use a combo box when you want the option of either typing a value or selecting a value from a predefined list.

備註Remarks

控制項Control 工具Tool
下拉式方塊控制項 下拉式方塊工具

直到您在表單檢視按一下下拉式方塊的箭頭,Microsoft Access 才會顯示清單。In Form view, Microsoft Access doesn't display the list until you click the combo box's arrow.

如果在您選取下拉式方塊工具之前,您有開啟控制項精靈,您可以使用精靈來建立下拉式方塊。If you have Control Wizards on before you select the combo box tool, you can create a combo box with a wizard. 若要開啟或關閉控制項精靈,請在工具箱中按一下 [控制項精靈] 工具。To turn Control Wizards on or off, click the Control Wizards tool in the toolbox.

LimitToList 屬性的設定值決定您是否可以輸入不在清單中的值。The setting of the LimitToList property determines whether you can enter values that aren't in the list.

清單可以是單欄或是多欄,且可以顯示該欄的標題或沒有標題。The list can be single- or multiple-column, and the columns can appear with or without headings.

範例Example

下列範例顯示如何使用多個 下拉式方塊 控制項,以提供查詢的準則。The following example shows how to use multiple ComboBox controls to supply criteria for a query.

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

下列範例會示範如何將下拉式方塊的 RowSource 屬性設定載入表單時。The following example shows how to set the RowSource property of a combo box when a form is loaded. 表單顯示時, cboDept 下拉式方塊中顯示儲存在 tblDepartment 下拉式方塊的 [ 部門 ] 欄位中的項目。When the form is displayed, the items stored in the Departments field of the tblDepartment combo box are displayed in the cboDept combo box.

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

下列範例會示範如何建立時顯示另一個繫結至一欄的下拉式方塊。The following example shows how to create a combo box that is bound to one column while displaying another. 設定 ColumnCount 的屬性為 2,即表示 cboDept 下拉式方塊會顯示由 RowSource 屬性所指定資料來源的前兩欄。Setting the ColumnCount property to 2 specifies that the cboDept combo box will display the first two columns of the data source specified by the RowSource property. 設定 BoundColumn 的屬性為 1 ,即表示當您檢查下拉式方塊的值時,會將儲存於第一欄的值傳回。Setting the BoundColumn property to 1 specifies that the value stored in the first column will be returned when you inspect the value of the combo box.

ColumnWidths屬性會指定兩個資料行的寬度。The ColumnWidths property specifies the width of the two columns. 藉由將第一欄寬度設定為 0 英吋,第一欄便不會顯示在下拉式方塊。By setting the width of the first column to 0in., the first column is not displayed in the combo box.

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

下列範例會顯示如何將項目加入到繫結的下拉式方塊中。The following example shows how to add an item to a bound combo box.

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

事件Events

方法Methods

屬性Properties

請參閱See also

支援和意見反應Support and feedback

有關於 Office VBA 或這份文件的問題或意見反應嗎?Have questions or feedback about Office VBA or this documentation? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.