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
No.4
- 回答日時:
merlionXXさん、こんにちは。
Wendy02です。
>ReDimってどういう場合につかうんでしょうか?
配列の仕切り直しです。
配列は、入れ物が分かれていますが、単に、配列と宣言したところで、そのままでは入れ物がありませんので、入れ物の数を決めてあげるということです。
詳しい内容は、大村あつしさんの『かんたんプログラミング Excel VBA応用編』などに書かれています。配列を自由に使いこなせられるようになると、一応、基礎段階が終了するのかなって思います。そういう私は、未だ、完全に配列を使いこなせていないような気がします。VBAでは、あまり厳密な使い方を求められませんし、Version の違いもあるから、VB6完全準拠というわけにはいかないけれどね。
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つ以上押されたものに関して、どうやって、そのアイテムを取るのか、あまり良いアイデアがありません。その都度、クリアするなら別ですが。
モジュールレベルで、配列変数を置いて、次回のイベントを監視させるかなんて、考えましたが、あまり名案が浮かびません。
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キーを押しながら
クリックしてみれば、わかると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELピボットテーブル(複数アイテム) 1 2023/04/27 12:15
- Visual Basic(VBA) VBA リストボックス複数選択からセルへの反映についての質問です。 リストボックス1では1つ選択 リ 6 2023/02/24 12:51
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
- Windows 10 windowsのファイル複数選択について エクスプローラーなどでファイルを複数選択する際、 最初のフ 4 2022/05/22 16:39
- Excel(エクセル) エクセルVBA 複数行にまたがっている選択を判定するには 2 2023/05/21 21:54
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Visual Basic(VBA) Outlook VBAについて 1 2023/07/10 12:41
- Visual Basic(VBA) Application.Dialogs(xlDialogFileDelete).Showの件 1 2023/02/22 10:02
- Excel(エクセル) 特定の位置にあるマクロボタンについて 2 2022/04/19 18:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルである行以下全部を削...
-
EXCEL VBAで全選択範囲の解除
-
Androidのスマホで毎回毎回ホー...
-
Excel VBA あるセルでENTERを押...
-
ipadのpagesでMS明朝を使う方法...
-
「無」と「未」の使い方
-
Jw-cadの範囲指定で文字が選択...
-
Excel 行列が選択出来ない
-
WORDでテキストを全て選択し一...
-
Excel VBAでn行毎に行の選択
-
シフトキーを使った範囲選択が...
-
VBAでファイルを開くときにファ...
-
EXCELピボットテーブル(複数ア...
-
言語の選択や国の選択をする時...
-
教えてgooのマイカテゴリを一つ...
-
Google Earth Pro(グーグルア...
-
大至急!
-
選択番号を書き忘れたときの点...
-
「これが」「これで」いいです...
-
Wordの表の行選択ができない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルである行以下全部を削...
-
EXCEL VBAで全選択範囲の解除
-
Androidのスマホで毎回毎回ホー...
-
VBAでファイルを開くときにファ...
-
Excel VBA あるセルでENTERを押...
-
ipadのpagesでMS明朝を使う方法...
-
「無」と「未」の使い方
-
Excel 行列が選択出来ない
-
Jw-cadの範囲指定で文字が選択...
-
「これが」「これで」いいです...
-
Google Earth Pro(グーグルア...
-
Excel VBAでn行毎に行の選択
-
シフトキーを使った範囲選択が...
-
Excel2003にて(ツール→オプシ...
-
Wordでドロップダウンリスト連動
-
Simejiで作ったきせかえを消す...
-
大至急!
-
戸惑う、惑うの違いはなんですか。
-
Word差込印刷で「テーブルを選...
-
ピボットテーブル 矢印が出な...
おすすめ情報