2017-12-21 13 views
1

私のComboBoxには、すでにいくつかの項目が選択されています。VBAにアクセスする:ComboBoxのアイテムを数えるには?

私はVBAで数えたいと思います。私は次の文字列のようなものを見つけることを期待していましたが、私はCompile error: Argument not optionalを取得します。

Me.<ComboBox_name>.ItemData.Count 

私も次の文字列を使用することを考えたが、それは私に0アイテムを与える:

Me.<ComboBox_name>.ItemSelected.Count 

enter image description here

答えて

3

コンボボックスは一般のに対し、単一の項目の選択を選択するか示すために使用されていますリストボックスは自然に複数選択をサポートします。

例えば、複数値の*テーブルフィールドをComboboxにリンクしている場合、複数の選択肢を持つComboboxを持つことができます。その場合、値が.ItemsSelectedプロパティで利用できる唯一の時間は、コンボボックスにフォーカスがあってドロップされている間です。

これを回避する方法は、コンボボックスの.Valueプロパティを配列に割り当てることです。配列には選択した値が含まれます。あなたは、配列の上限を取り、1を追加することによって、それらを数えることがあります。

Dim comboitems() as Variant 
Dim count as Long 

comboitems = yourcombobox.Value 

' array is 0-based so add one to get the count 
count = UBound(comboitems) + 1 

配列が多次元の場合は、値をこのように読んで:

' array is 0-based so add one to get the count 
count = UBound(comboitems, [dimension]) + 1 

' where [dimension] is a 1-based index equivalent to the 'column' of the data 

私はそれが役に立てば幸い!

*注意:複数値フィールドは、彼らがアクセスでサポートされている 不十分であるため、通常は、無分別、通常、あなたがすなわち、別のテーブルに複数値フィールドを飛び出し、あなたの テーブルを正規化する必要があります意味しています。オプションをカウントする

0

、それは次のとおりです。

Me!<ComboBox_name>.ListCount 

か、列見出しを使用する場合には、正確には:

Me!<ComboBox_name>.ListCount - Abs(Me!<ComboBox_name>.ColumnHeads) 
関連する問題