- ベストアンサー
エクセルの「フォーム」のリストボックスで複数選択?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
merlionXXさん、追伸です。 たまたま、今、本を開いたら、同じ内容のものが出てきまして、複数選択の時は、何かのタイミングで、初期化する、ということが書かれていました。考えてみれば、そのとおりですね。ListBox_Select4Only で、4つのみの選択は可能ですが、リストボックスのリセットとセットでお使いになったほうがよいです。 なお、以下の Worksheets("Sheet1"). という書き方は、本来は、シートモジュールに書くので、このような書き方はしなくてよいです。そのまま、何も付けずに、シートモジュールに書いてください。 With ListBoxes(1) '-------------------------------------- リストボックスのSelectのリセット Sub ListboxReseting() Dim ar() As Variant Dim i As Integer With Worksheets("Sheet1").ListBoxes(1) ReDim ar(1 To .ListCount) For i = 1 To .ListCount ar(i) = False Next i .Selected = ar() End With End Sub リストボックスに、4つしか選べないコード 'ただし、複数選択モードのみ Sub ListBox_Select4Only() Static oldAr() As Variant Dim Ar() As Variant Dim CountAr() As Variant Dim i As Integer Dim k As Integer With Worksheets("Sheet1").ListBoxes(1) Ar() = .Selected For i = 1 To .ListCount If Ar(i) Then k = k + 1 End If Next i If k > 4 Then For i = 1 To .ListCount If Ar(i) Then If oldAr(i) <> Ar(i) And Ar(i) Then .Selected(i) = False MsgBox "その選択は出来ません。" Exit Sub End If End If Next i End If oldAr() = .Selected End With End Sub
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
merlionXXさん、こんにちは。 Wendy02です。 >ReDimってどういう場合につかうんでしょうか? 配列の仕切り直しです。 配列は、入れ物が分かれていますが、単に、配列と宣言したところで、そのままでは入れ物がありませんので、入れ物の数を決めてあげるということです。 詳しい内容は、大村あつしさんの『かんたんプログラミング Excel VBA応用編』などに書かれています。配列を自由に使いこなせられるようになると、一応、基礎段階が終了するのかなって思います。そういう私は、未だ、完全に配列を使いこなせていないような気がします。VBAでは、あまり厳密な使い方を求められませんし、Version の違いもあるから、VB6完全準拠というわけにはいかないけれどね。
お礼
何度もありがとうございました。
- Wendy02
- ベストアンサー率57% (3570/6232)
merlionXXさん、こんばんは。Wendy02です。 すでに回答は出ていますが、 ar = .Selected 以下のように、配列変数で受けられますので、そのを処理する方法はいくつかあるかと思います。 Sub ListBox_Selecting() Dim msg As String Dim ar() As Variant Dim i As Integer With Worksheets("Sheet1").ListBoxes(1) ReDim ar(0 To .ListCount) ar() = .Selected For i = 1 To .ListCount If ar(i) Then msg = msg & "," & i End If Next End With MsgBox Mid$(msg, 2) End Sub >選択できる数を仮に4つまでに限定する方法ももしあれば教えてください。 これは、良いアイデアがありませんね。 Selected されたもののCountすることは可能ですが、4つ以上押されたものに関して、どうやって、そのアイテムを取るのか、あまり良いアイデアがありません。その都度、クリアするなら別ですが。 モジュールレベルで、配列変数を置いて、次回のイベントを監視させるかなんて、考えましたが、あまり名案が浮かびません。
お礼
ありがとうございます。 出来ました。
補足
ReDimってどういう場合につかうんでしょうか?
- masa_019
- ベストアンサー率61% (121/197)
フォームのリストボックスで、複数選択や拡張選択を 指定した場合リンクするセルの設定は無視されるようです。 何番目が選択されているかを取得するには、 リストッボクスのSelectedプロパティの True/Falseを調べるより無いように思います。 Sub test() Dim i As Integer For i = 1 To ActiveSheet.ListBoxes("List Box 1").ListCount Debug.Print i & "番目:" & ActiveSheet.ListBoxes("List Box 1").Selected(i) Next End Sub 拡張選択については、リストボックスの項目を選択するときに ShiftキーやCtrlキーを押しながら クリックしてみれば、わかると思います。
お礼
ありがとうございます。 できました!
関連するQ&A
- EXCELリストボックスの複数値の取得
EXCELのリストボックスの複数選択又は拡張選択の値の取得方法がわかりません。 下図は単一選択で行った場合です。 この時、複数選択又は拡張選択を選んだ場合の「リンクするセル」の設定がわかりません。 VBAを使用しない方法で値を取得したいのです。 わかる方、教えて下さい。
- 締切済み
- Excel(エクセル)
- Excel、リスト、複数
こんにちは。 Excel2000でリストから複数の値を選択し、セルに反映させる方法はありますか? 入力規則は1つしか選択できませんよね。 コントロールツールボックスを使えば良いのでしょうか? VBは超初心者のため何とぞ宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルのリストボックスについて
エクセルのフォームにリストボックスというものがありますが、 コントロールの書式設定→コントロール→選択の種類で複数選択 と拡張選択は、VBAで使用するために存在しているのでしょうか? VBAを使用せずとも使い道があるようでしたら教えてください。
- ベストアンサー
- オフィス系ソフト
- リストボックス(複数選択しない)の場合の選択解除について
こんにちは。現在ACCESS2000のフォームにリストボックスを配置し、 複数選択は「しない」に設定しています。 リストボックスの項目をどれか一つ選択するか全く選択しないことを 可能としたい(選択している値を再度クリックすると選択解除できるよう にしたい)のですが、うまくいきません。 何か方法がありましたら、ご教示願います。
- ベストアンサー
- オフィス系ソフト
- excelのリストボックスで選択した項目をアクティブセルに入力方法
もしかしたら既出かもしれませんが・・・ フォームコントロールのリストボックスで入力範囲の指定したリストをリンクするセルをワークシート上にクリックしたセルに入力させる方法はありますか? もし、不可能でしたら、ActiveXコントロールのリストボックスでも構いません。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルのリストボックスから複数選択する方法
エクセルのリストボックスを作成し、一つの項目を選択することはできるのですが、複数項目を選択することができず困っています。いくつかサイトを見て作成しましたが、うまくいきません。 エクセル2010で、「開発」→「挿入」→「Activexコントロールのリストボックス」を選び、マクロを入れたつもりですが、そのマクロが合っていないのか、何も反映されません。エクセルに慣れていないのでいろいろなサイトを見ながら真似したのですが駄目でした・・・。ご存じの方おりましたらお助けください。よろしくお願いいたします。 もし可能であれば、複数項目を選択した上で自由記述が同じセルにできるとなお助かります。
- 締切済み
- オフィス系ソフト
- 複数選択可能なリストボックスを使いたい
リストボックスで複数選択された項目を配列によってPHPファイルに受け渡し、この配列を使ってselect文を書く方法についてご教示ください。 たとえば、都道府県名のリストボックスから「東京都」「大阪府」「兵庫県」を選択したら、これら3都府県のOR検索が可能となるようなselect文の書き方を知りたいのです。 よろしくお願いいたします。
- ベストアンサー
- PHP
- [Excel]複数選択可能なリストビューは?
Excel 2007を使っています ユーザーフォームで、ListView(Microsoft ListView Control 6.0)を つかっていますが、複数選択できなくてこまっています。 リストボックスのfmMultiSelectExtendedみたいな 使い方をしたいのですが、何かいい方法はありませんか?
- 締切済み
- オフィス系ソフト
- エクセル リストボックスの複数選択
エクセル ActiveXコントロール のリストボックスで複数選択(fmMultiSelectMulti)ができますが、 エクセルを保存して再起動すると、前回選択した行は全てリセットされています。 エクセルを再起動しても選択部分が保持されるような設定はありますでしょうか。
- ベストアンサー
- その他MS Office製品
- Access97のフォーム(リストボックス)について
Access97のフォームについてです。リストボックスで複数選択設定した場合,その選択項目をテーブルに反映させる方法を教えて下さい。
- ベストアンサー
- オフィス系ソフト
お礼
リセット方法および4つのみ選択の方法、ありがとうございました!!