Excel VBAのリストボックスについて質問です。(Microsoft365)

画像

Visual Basic | Excel90閲覧

ベストアンサー

0
画像

お答えいただきありがとうございます。自分では想像もつかない方法ですごいです。 ListBoxの表示ですが、最小月から最大月→4月から3月にしたい場合なども考えてくださり嬉しいです。 早速実行してみたのですが、画像のように実行後にA1を基準としたフィルター設定になってしまいます。 お答えいただいた際の添付画像ではA5列が基準となっているようで、原因がわかりません。 よろしければ対処方法も教えていただけますでしょうか。

画像

ThanksImg質問者からのお礼コメント

ユーザーフォームを表示中でもセルを操作できるようにという点や、月の表示の順なども考慮していただきありがとうございました。 アドバイスを追加してくださったおかげで知らなかったことを学べ、感謝しております。 今回、お二方にお答えいただきベストアンサーを決めることで正直悩みました。 本当にありがとうございました。

お礼日時:2021/11/30 15:45

その他の回答(1件)

1

Case 0 Call 月4 は無くても・・・・ Private Sub UserForm_Initialize() With ListBox1 .MultiSelect = 1 .AddItem "2021年4月" .AddItem "2021年5月" .AddItem "2021年6月" .AddItem "2021年7月" .AddItem "2021年8月" .AddItem "2021年9月" .AddItem "2021年10月" .AddItem "2021年11月" .AddItem "2021年12月" .AddItem "2022年1月" .AddItem "2022年2月" .AddItem "2022年3月" End With End Sub Private Sub CommandButton1_Click() Dim D(), i As Long, k As Long, Crt For i = 0 To 11 If ListBox1.Selected(i) Then ReDim Preserve D(k) D(k) = 1 ReDim Preserve D(k + 1) D(k + 1) = Format(ListBox1.List(i, 0) & "1日", "m/d/yyyy") k = k + 2 End If Next If k = 0 Then Exit Sub If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False ActiveSheet.Range("A5").CurrentRegion.AutoFilter field:=11, Operator:=xlFilterValues, Criteria2:=D For i = 0 To 11 ListBox1.Selected(i) = False Next Me.Hide End Sub

1人がナイス!しています

お答えいただきありがとうございます。 ReDim Preserveなど使い方がわからない記述もあり、調べながらひとつひとつ読んでみましたがまだまだ自分では考えつきそうにないコードで勉強になります。 実行後にA5基準でなく、A2基準でフィルター設定がされてしまうのですが、考えられる原因はありますでしょうか。 質問の仕方がおかしければご指摘ください。

画像