Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6387 / 13646 ツリー ←次へ | 前へ→

【45507】オートフィルタみたいなリスト取得 わからんちゃん! 06/12/28(木) 10:02 質問[未読]
【45513】Re:オートフィルタみたいなリスト取得 ponpon 06/12/28(木) 11:51 発言[未読]
【45515】Re:オートフィルタみたいなリスト取得 わからんちゃん! 06/12/28(木) 13:20 質問[未読]
【45516】Re:オートフィルタみたいなリスト取得 ponpon 06/12/28(木) 14:15 発言[未読]
【45518】Re:オートフィルタみたいなリスト取得 ponpon 06/12/28(木) 14:49 発言[未読]

【45507】オートフィルタみたいなリスト取得
質問  わからんちゃん!  - 06/12/28(木) 10:02 -

引用なし
パスワード
   オートフィルタを使うとリストが表示されますが
あのようなリストを取得したいのですがどのようにするのですか?

一列にランダムな文字があり、コンボボックスに文字を取得させたいのですが
いい方法はないですか?

【45513】Re:オートフィルタみたいなリスト取得
発言  ponpon  - 06/12/28(木) 11:51 -

引用なし
パスワード
   ▼わからんちゃん! さん:
>一列にランダムな文字があり、コンボボックスに文字を取得させたいのですが
>いい方法はないですか?

コンボボックスは、フォームのものでしょうか?
それとも、コントロールツールボックスののものでしょうか?

○フォームのコンボボックスの場合
 右クリック→コントロールの書式設定→入力範囲に"一列にランダムな文字"範囲を指定する。

○コントロールツールボックスのコンボボックスの場合
 プロパティーを出して、listfillrangeに"一列にランダムな文字"範囲を指定する。
または、マクロで指定する。

※後は、入力規則でも同じようなことは出来ると思います。
リストを表示したいセルを選択→データ→入力規則→入力の種類でリストを選択
→元の値のところに、"一列にランダムな文字"範囲を指定する。

【45515】Re:オートフィルタみたいなリスト取得
質問  わからんちゃん!  - 06/12/28(木) 13:20 -

引用なし
パスワード
   >○コントロールツールボックスのコンボボックスの場合
> プロパティーを出して、listfillrangeに"一列にランダムな文字"範囲を指定する。

コントロールツールボックスでいいです
一列に40000文字程度がランダムに並んでいて
全部をコンボボックスに表示するのではなく
重複する文字はひとつの文字として表示させたいのです
オートフィルタのリストみたいにすぐに表示できる方法はないですか?

【45516】Re:オートフィルタみたいなリスト取得
発言  ponpon  - 06/12/28(木) 14:15 -

引用なし
パスワード
   ▼わからんちゃん! さん:
>一列に40000文字程度がランダムに並んでいて
>全部をコンボボックスに表示するのではなく
>重複する文字はひとつの文字として表示させたいのです
>オートフィルタのリストみたいにすぐに表示できる方法はないですか?

>一列に40000文字程度が
どこの列か解りませんので、A列と仮定していますので、そちらにあわせてください。
コンボボックスは、シート上に配置されているものとして
シートモジュールです。
シートがアクティブになったときに作動します。

Private Sub Worksheet_Activate()
  Dim myDic As Object
  Dim r As Range
  
  Me.ComboBox1.Clear
  Set myDic = CreateObject("Scripting.Dictionary")
  For Each r In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
    myDic(r.Value) = Empty
  Next
  Me.ComboBox1.List = myDic.Keys
End Sub

【45518】Re:オートフィルタみたいなリスト取得
発言  ponpon  - 06/12/28(木) 14:49 -

引用なし
パスワード
   >40000文字程度
もあるなら、配列の方が速いかな?

Private Sub Worksheet_Activate()
  Dim myDic As Object
  Dim myVal As Variant
  Dim i As Long
  
  Me.ComboBox1.Clear
  Set myDic = CreateObject("Scripting.Dictionary")
  myVal = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Value
  For i = 1 To UBound(myVal, 1)
    myDic(myVal(i, 1)) = Empty
  Next
  Me.ComboBox1.List = myDic.Keys
End Sub

6387 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free