2017-05-21 13 views
0

ボタンに応じて複数の列でフィルタリングされた範囲を取り込み、コンボボックスに入力するExcelシートがあります。複数の列を持つコンボボックスへのフィルタリングされたリスト

アイデアは、複数のカテゴリ(複数のカテゴリに含めることができます)の製品ピッカーを作成しています。

VBAは私のエリアではありません。数日間の検索の後、私が得た解決策は非常に控えめです。などなどVBA範囲、配列の型を扱う知識の

  • 一般的な不足、
  • SpecialCells(xlCellTypeVisible) - 私は を考えているだろうと>が動作しない - :私は直面しています

    問題そのため、コンボボックスにデータを取得するための複数の種類を持つようになる

擬似コード:

  1. ワークシートを有効にし、名前付き範囲をoldRangeにコピーします。
  2. 「選択」 - >「この方法で何が起こっているかわかります。すでにオートフィルタ
  3. ソートやフィルタをクリアする」を設定している場合
  4. 無効にオートフィルタを選択 - >だから私はoldRange.offsetを使用してnewRangeへ
  5. セット(1,0).SpecialCells(xlCellTypeVisibleを何が起こっているかを見ることができます) - >ヘッダを取り除き、そして濾過ます行
  6. NEWARRAY = newRange
  7. combobox.list = NEWARRAY

スプレッドシート: データは は11列がコンボボックスに表示する必要が異なってフォーマットされている(ラジオボタンで選択)複数のタブから来ている

質問:newRange = oldRange.SpecialCells(xlCellTypeVisible)は転送しない理由 は、誰もが答えることができます適切にcombobox.listに? フォームの背後にあるExcelウィンドウで、オートフィルタが動作していることを確認してから、正しいデータを選択できます。 私が直面している問題は、最初の非表示/フィルタリングされた値までComboBoxリストに値を設定してから停止することです。これは、最初にソートすることで動作させることができることを意味しますが、複数の並べ替えを使用してこれをスケールアップできるとは確信していません&良い値の間に隠れた値を避ける複数のフィルタ(comboBoxリストを不完全にする) ...

これはうまくいくかもしれませんが、私はそれを食べているように感じます。コンボボックスにこれらの値を入力する簡単な方法がありますか?アドバンス

答えて

0

おかげでColumnCountプロパティが正しく設定されていることを確認してください。 1に設定すると、1つの列しか表示されません。

このようなUserForm Initializeイベントで、コンボボックスのColumnCountプロパティを設定する方がよいでしょう...

Private Sub UserForm_Initialize() 
    Dim ws As Worksheet 
    Dim oldRange As Range 

    Set ws = Sheets("Sheet1") 
    Set oldRange = ws.Range("A1").CurrentRegion 

    Me.ComboBox1.ColumnCount = oldRange.Columns.Count 
End Sub 
+0

人応答してくれてありがとうしかし、column.countが11に設定されている主な問題は、SpecialCellsの挙動(xlCellTypeVisible)でありおよびコンボボックスの中に最初の隠された行の後の値を取得します。 – jteez

関連する問題