英語で読む

次の方法で共有


ComboBox オブジェクト (Access)

このオブジェクトは、コンボ ボックス コントロールに対応しています。 コンボ ボックス コントロールは、テキスト ボックスとリスト ボックスの機能を組み合わせたものです。 コンボ ボックスを使うと、値を入力したり、定義済みのリストから値を選択することができます。

注釈

コントロール ツール
コンボ ボックス コントロール コンボ ボックス ツール

フォーム ビューでは、コンボ ボックスの矢印をクリックすると、定義済みのリストが表示されます。

コンボ ボックス ツールを選択する前にコントロール ウィザードをオンにした場合は、ウィザードでコンボ ボックスを作成できます。 コントロール ウィザードを有効または無効にするには、ツールボックスの [コントロール ウィザードの使用] をクリックします。

"LimitToList/入力チェック" プロパティの設定により、リストにない値を入力できるかどうかを特定できます。

リストは 1 列にすることも、複数の列にすることもできます。また、列の見出しを表示することも、表示しないことも可能です。

次の例では、複数の ComboBox コントロールを使用してクエリの条件を指定する方法を示します。

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/値集合ソース" プロパティを設定する方法を示します。 フォームを表示するときに、tblDepartment コンボ ボックスの Departments フィールドに保管されているアイテムが 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

次の例は、別の列を表示しながら、1 つの列にバインドされたコンボ ボックスを作成する方法を示しています。 ColumnCount プロパティを 2 に設定すると、RowSource プロパティによって指定されたデータ ソースの最初の 2 列が cboDept コンボ ボックスに表示されます。 BoundColumn プロパティを 1 に設定すると、コンボ ボックスの値を調べるときに最初の列に格納されている値が返されるようになります。

ColumnWidths プロパティは 2 つの列の幅を指定します。 最初の列の幅を 0in に設定すると、最初の列はコンボ ボックスに表示されません。

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

次の例では、連結されているコンボ ボックスにアイテムを追加する方法を示します。

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

イベント

メソッド

プロパティ

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。