0

範囲からのオプションでコンボボックスを埋めるのに問題があります。

ユーザーは refedit で範囲を選択し、ComboBox選択したセルの値を入力する必要があります。ユーザーが参照を変更した場合、古いデータを削除して新しいデータを再入力する必要があります。

以下は私の現在のコードです。正しくコンパイルされますが、動作しません。

私はComboBoxそれ自体に執着していませんが、ユーザーが「キー」として使用したいものを選択できるように、列の値をリストに入力する必要があります。最初のセットは、行にあるもののサンプルです. これらのオプションをドロップダウンの選択肢として提供したいと思います。

私が取り組んでいることのコピーをhttp://ge.tt/2dbV5Yt/v/0?cからダウンロードできます。

店舗番号 住所 市区町村 郵便番号 市場半径
Private Sub rngHeader_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim selRng As Range
    Set selRng = Range(rngHeader.Value)

    '//Erase any items that are in there
    For I = 1 To cmbKeyCol.ListCount
        cmbKeyCol.RemoveItem 0 'Remove the top item each time
    Next I


    'Below here is the part that I'm having trouble with. This is one of my attempts, but
       'I've changed this thing probably 20 times since asking the question
    '//Build  new list of items from the header row.
    For Each cell In selRng.Cells
        cmbKeyCol.AddItem cell.Value
    Next
End Sub
4

1 に答える 1

0

why don't you use this instead:

cmbkeyCol.RowSource = selRng.Address 'Assuming you already got your range right.

This adds all the items in the range specified instead of iterating through them 1 by 1.

Edit 1:

Dim list as variant

list = selRng.Value
list = Application.Transpose(list)

cmbkeyCol.List = list

Hope this works.

Edit 2:

Dim list as variant

list = rngHeader.value
list = Application.Transpose(list)

cmbkeyCol.List = list

I assumed that selRng is the source range in Edit 1 well in fact it is rngHeader. Hopefully this works now.

于 2013-10-01T03:41:11.113 に答える