• ベストアンサー

エクセル リストボックスの複数選択

エクセル ActiveXコントロール のリストボックスで複数選択(fmMultiSelectMulti)ができますが、 エクセルを保存して再起動すると、前回選択した行は全てリセットされています。 エクセルを再起動しても選択部分が保持されるような設定はありますでしょうか。

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

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

'ThisWorkbook に登録してください。 'Application.ScreenUpdating を入れたら、どうも誤動作するようです。 Private Sub Workbook_BeforeClose(Cancel As Boolean)  '閉じる時  Dim LCount As Long  Dim i As Long  Dim ret As Variant  On Error GoTo ErrHandler  With ThisWorkbook   With Worksheets("Sheet2").ListBox1    LCount = .ListCount    For i = 0 To LCount - 1     If .Selected(i) Then      ret = ret & "," & i     End If    Next i   End With   .CustomDocumentProperties("ListData").Value = Mid(ret, 2)  End With  Exit Sub ErrHandler:  With ActiveWorkbook.CustomDocumentProperties   .Add Name:="ListData", _   LinkToContent:=False, _   Type:=msoPropertyTypeString, _   Value:=0 '  End With  Resume Next End Sub Private Sub Workbook_Open()  '開くとき  Dim buf As Variant  Dim ar As Variant  Dim v As Variant  With ThisWorkbook   buf = .CustomDocumentProperties("ListData").Value   ar = Split(buf, ",")   .Worksheets("Sheet2").Select   With Worksheets("Sheet2").ListBox1    For Each v In ar     .Selected(v) = True    Next v   End With  End With End Sub

naolessie
質問者

お礼

で、で、、、出来ました! ありがとうございます。 以下の部分でエラーが出ていたので、この部分を削除しました。 ----------------------------------------------- ErrHandler:  With ActiveWorkbook.CustomDocumentProperties   .Add Name:="ListData", _   LinkToContent:=False, _   Type:=msoPropertyTypeString, _   Value:=0 '  End With ----------------------------------------------- また、"Sheet2"はないので"Sheet1"に書き換えました。 しかし難しいマクロですね。もっと簡単にできると思っていました(汗)。。。。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

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

シート名、Sheet1を使えなかったので、Sheet2 にしたので、こちらのミスですが、 ErrHandler:  With ActiveWorkbook.CustomDocumentProperties  ・  ・ --------------------------------- ここは、基本的にエラーが出ることはありえませんから、おそらく、VBEditor のオプションのエラーモードが、違っている可能性があります。後々、こまって現象がおきます。 VBE-->ツール-->オプション-->全般(Tab) エラートラップ  エラー処理対象がいのエラーで、中断 を選択されているか確認してください。 http://msdn.microsoft.com/ja-jp/library/cc344016.aspx 「エラー トラップ] セクションでは、デバッグ操作で行う作業に適した  オプションを選択してください。既定の設定は  [エラー処理対象外のエラーで中断] です。」

naolessie
質問者

お礼

ThisWorkbook の中にあった他のマクロが邪魔していたようです。 まっさらにしてから貼り付け直したら出来ました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのリストボックスから複数選択する方法

    エクセルのリストボックスを作成し、一つの項目を選択することはできるのですが、複数項目を選択することができず困っています。いくつかサイトを見て作成しましたが、うまくいきません。 エクセル2010で、「開発」→「挿入」→「Activexコントロールのリストボックス」を選び、マクロを入れたつもりですが、そのマクロが合っていないのか、何も反映されません。エクセルに慣れていないのでいろいろなサイトを見ながら真似したのですが駄目でした・・・。ご存じの方おりましたらお助けください。よろしくお願いいたします。 もし可能であれば、複数項目を選択した上で自由記述が同じセルにできるとなお助かります。

  • エクセル2013のリストボックス

    エクセル2010でワークシート上に配置したリストボックスがあります。 ActiveXではなくフォームコントロールのリストボックスです。 これに11項目のリストを設定してあります。 2010ではまったく問題がないのですが、エクセル2013で開くと下の2項目が選択できません。 2010と2013では互換性がないのでしょうか?

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

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

  • エクセルVBAのリストボックス

    エクセルVBAのリストボックスを使った検索システムを作っています。 リストボックスはユーザーフォームではなくsheetに貼り付けてます。 リスト地域 北海道 青 森 岩 手 山 形 新 潟  ・  ・  ・ リストボックスから地域(複数選択)を選んで検索ボタン(コマンドボタン)を押すと同じsheetの特定の場所(例えばrange("A25")に選択した地域を表示させたいのですがうまくいきません。 例) 北海道、東京、愛知 のように表示させたいです。 単数選択ではうまく表示できるのですが、複数だとうまくいきません。 (複数選択できるようにプロパティのMultiSelectの項目はfmMultiselectMultiに変更しています。) よろしくお願いします。

  • エクセルのリストボックスの複数選択について

    エクセルのワークシート上に配置するリストボックスで複数選択する場合に値(番号)を返す方法を教えてください。よろしくお願いします。

  • エクセルのリストボックスについて

    エクセルのフォームにリストボックスというものがありますが、 コントロールの書式設定→コントロール→選択の種類で複数選択 と拡張選択は、VBAで使用するために存在しているのでしょうか? VBAを使用せずとも使い道があるようでしたら教えてください。

  • Excel、リスト、複数

    こんにちは。 Excel2000でリストから複数の値を選択し、セルに反映させる方法はありますか? 入力規則は1つしか選択できませんよね。 コントロールツールボックスを使えば良いのでしょうか? VBは超初心者のため何とぞ宜しくお願いします。

  • リストボックス型の選択メニューの作り方

    教えてください。 エクセルでコントロールボックスを開いて、リストボックス内の内容を選択できる物を作りたいのですが・・・お願いします。 例えば、リストボックスに「選択する↓」の「↓」を押すと下の方に 「1・2・3・4・5」と出てきて、選択出来る様な物です。

  • エクセルVBAで複数選択できるように設定したリストボックスの、選択され

    エクセルVBAで複数選択できるように設定したリストボックスの、選択されている項目の数を取得する方法はないでしょうか?

  • EXCELのリストボックスを選択した行が何行目か

    エクセルVBAの初心者です。 VBAを組んでいて表のデーターをリストボックスに表示しています 選択されたリストボックスの値はわかるのですが、リストボックスの上から 何行目を選択したかどうか知りたいのですが、わかる方がおられましたら よろしくお願いします。

専門家に質問してみよう