• ベストアンサー

エクセルの「フォーム」のリストボックスで複数選択?

エクセル2000です。 「コントロールツールボックス」ではなく、「フォーム」のリストボックスで複数選択を可能とした場合、選ばれたのが何番目と何番目なのかを知る方法をご教示ください。 単一選択であれば「リンクするセル」に何番目か表示されるのですが、複数選択では0となってしまいます。 選択できる数を仮に4つまでに限定する方法ももしあれば教えてください。 複数選択以外に「拡張選択」というものもありますが、これはどういう使い方をするのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

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

merlionXX
質問者

お礼

リセット方法および4つのみ選択の方法、ありがとうございました!!

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

merlionXXさん、こんにちは。 Wendy02です。 >ReDimってどういう場合につかうんでしょうか? 配列の仕切り直しです。 配列は、入れ物が分かれていますが、単に、配列と宣言したところで、そのままでは入れ物がありませんので、入れ物の数を決めてあげるということです。 詳しい内容は、大村あつしさんの『かんたんプログラミング Excel VBA応用編』などに書かれています。配列を自由に使いこなせられるようになると、一応、基礎段階が終了するのかなって思います。そういう私は、未だ、完全に配列を使いこなせていないような気がします。VBAでは、あまり厳密な使い方を求められませんし、Version の違いもあるから、VB6完全準拠というわけにはいかないけれどね。

merlionXX
質問者

お礼

何度もありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

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つ以上押されたものに関して、どうやって、そのアイテムを取るのか、あまり良いアイデアがありません。その都度、クリアするなら別ですが。 モジュールレベルで、配列変数を置いて、次回のイベントを監視させるかなんて、考えましたが、あまり名案が浮かびません。

merlionXX
質問者

お礼

ありがとうございます。 出来ました。

merlionXX
質問者

補足

ReDimってどういう場合につかうんでしょうか?

  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

フォームのリストボックスで、複数選択や拡張選択を 指定した場合リンクするセルの設定は無視されるようです。 何番目が選択されているかを取得するには、 リストッボクスの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キーを押しながら クリックしてみれば、わかると思います。

merlionXX
質問者

お礼

ありがとうございます。 できました!

関連するQ&A

  • EXCELリストボックスの複数値の取得

    EXCELのリストボックスの複数選択又は拡張選択の値の取得方法がわかりません。 下図は単一選択で行った場合です。 この時、複数選択又は拡張選択を選んだ場合の「リンクするセル」の設定がわかりません。 VBAを使用しない方法で値を取得したいのです。 わかる方、教えて下さい。

  • 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)ができますが、 エクセルを保存して再起動すると、前回選択した行は全てリセットされています。 エクセルを再起動しても選択部分が保持されるような設定はありますでしょうか。

  • Access97のフォーム(リストボックス)について

    Access97のフォームについてです。リストボックスで複数選択設定した場合,その選択項目をテーブルに反映させる方法を教えて下さい。

専門家に質問してみよう