プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。
ユーザフォームに
リストボックス1から5まであり、
全て選択解除したいのですが、
下記のコードは

Dim Listb As ListBox
Dim MyCb() As Variant
Dim i As Long
i = 1

For Each Listb In UserForm1.listboxs
ReDim Preserve MyCb(i)
MyCb(i) = ListBox.Name
i = i + 1
Next
は検索でててきましたが、うまく動作せず
おしえてくれませんでしょうか

質問者からの補足コメント

  • うーん・・・

    Dim i As Long
    For i = 0 To ListBox1.ListCount - 1
    ListBox1.Selected(i) = False
    ListBox2.Selected(i) = False
    ListBox3.Selected(i) = False
    ListBox4.Selected(i) = False
    ListBox5.Selected(i) = False
    Next
    でいくことはいきますが、
    ListBox1.ListCount - 1はlistbox1ですから
    まぐれですか

      補足日時:2021/03/30 21:11

A 回答 (2件)

どこで見つけられたのか気になりますね。


VBっぽい書き方なものなので。

Dim n As Integer

With ListBox1 '複数選択可のリストボックス
For n = 0 To .ListCount - 1
If .Selected(n) Then .Selected(n) = False
Next
End With

For n = 2 To 3 ' 検証では3つなので
Me.Controls("ListBox" & n).ListIndex = -1
Next

リストボックスの個数と複数選択しているものについては1つとして検証した物ですので適宜修正願います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
以下のコードでなんとかならないかなと
いじくりまわして、だめでした。
Sub チェックボックス全部選択()

Dim checkbox As checkbox
Dim MyCb() As Variant
Dim i As Long

i = 1

'すべてのチェックボックスをループし、オブジェクト名を取得
For Each checkbox In ActiveSheet.CheckBoxes
ReDim Preserve MyCb(i)
MyCb(i) = checkbox.Name
i = i + 1
Next

'全てのチェックボックスを全選択
ActiveSheet.Shapes.Range(MyCb).Select

End Sub

お礼日時:2021/03/30 22:41

補足を見て。



>ListBox1.ListCount - 1

ではListBox1より格納している値の多いListBoxは途中で処理を中断させることになりますね。
かと言って一番多いListBoxを指定したら今度は少ない方のListBoxでエラーになると思われます。
    • good
    • 0
この回答へのお礼

なるほどです。
ありがとうございました。

お礼日時:2021/03/30 22:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!