- ベストアンサー
エクセル リストボックスの複数選択
エクセル ActiveXコントロール のリストボックスで複数選択(fmMultiSelectMulti)ができますが、 エクセルを保存して再起動すると、前回選択した行は全てリセットされています。 エクセルを再起動しても選択部分が保持されるような設定はありますでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
'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
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
シート名、Sheet1を使えなかったので、Sheet2 にしたので、こちらのミスですが、 ErrHandler: With ActiveWorkbook.CustomDocumentProperties ・ ・ --------------------------------- ここは、基本的にエラーが出ることはありえませんから、おそらく、VBEditor のオプションのエラーモードが、違っている可能性があります。後々、こまって現象がおきます。 VBE-->ツール-->オプション-->全般(Tab) エラートラップ エラー処理対象がいのエラーで、中断 を選択されているか確認してください。 http://msdn.microsoft.com/ja-jp/library/cc344016.aspx 「エラー トラップ] セクションでは、デバッグ操作で行う作業に適した オプションを選択してください。既定の設定は [エラー処理対象外のエラーで中断] です。」
お礼
ThisWorkbook の中にあった他のマクロが邪魔していたようです。 まっさらにしてから貼り付け直したら出来ました。 ありがとうございました。
お礼
で、で、、、出来ました! ありがとうございます。 以下の部分でエラーが出ていたので、この部分を削除しました。 ----------------------------------------------- ErrHandler: With ActiveWorkbook.CustomDocumentProperties .Add Name:="ListData", _ LinkToContent:=False, _ Type:=msoPropertyTypeString, _ Value:=0 ' End With ----------------------------------------------- また、"Sheet2"はないので"Sheet1"に書き換えました。 しかし難しいマクロですね。もっと簡単にできると思っていました(汗)。。。。