Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9892 / 13646 ツリー ←次へ | 前へ→

【24895】プルダウンについて 壁ばかり 05/5/12(木) 18:41 質問[未読]
【24901】Re:プルダウンについて ni 05/5/13(金) 1:03 回答[未読]
【24906】Re:プルダウンについて Kein 05/5/13(金) 11:50 回答[未読]
【24944】Re:プルダウンについて nossori 05/5/14(土) 22:58 質問[未読]
【24945】Re:プルダウンについて Kein 05/5/14(土) 23:22 発言[未読]

【24895】プルダウンについて
質問  壁ばかり  - 05/5/12(木) 18:41 -

引用なし
パスワード
   入力規則のようなプルダウンでリスト内を複数選択(Ctrl+など)できるのはVBAで実現可能でしょうか?
いろいろやってみましたが、どうしてもできません。
どうかご教授お願いします

【24901】Re:プルダウンについて
回答  ni  - 05/5/13(金) 1:03 -

引用なし
パスワード
   こんにちは

▼壁ばかり さん:
>入力規則のようなプルダウンでリスト内を複数選択(Ctrl+など)できるのはVBAで実現可能でしょうか?
>いろいろやってみましたが、どうしてもできません。
>どうかご教授お願いします

コントロールツールボックスのリストボックスを使って、
MultiSelectプロパティをHELPで調べると、
使い方のサンプルもありますよ。

【24906】Re:プルダウンについて
回答  Kein  - 05/5/13(金) 11:50 -

引用なし
パスワード
   ダブルクリックしたセルの位置に、複数選択できるフォームのリストボックスを配置し、
その下にボタンを配置します。リストで任意の値を選択した後ボタンを押すと、
選択した文字がメッセージされます。

↓シートモジュールへ

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
  Dim Lp As Single, Tp As Single
  Dim Wp As Single, Hp As Single
 
  Cancel = True
  With Target
   Lp = .Left: Tp = .Top
   Wp = .Width * 2: Hp = .Height
  End With
  With ActiveSheet.ListBoxes
   If .Count > 0 Then .Delete
   With .Add(Lp, Tp, Wp, Hp * 3)
     .AddItem Array("A", "B", "C", "D", "E", "F")
     .MultiSelect = xlSimple
   End With
  End With
  With ActiveSheet.Buttons
   If .Count > 0 Then .Delete
   With .Add(Lp, Tp + Hp * 3, Wp, Hp)
     .Caption = "選択完了"
     .OnAction = "Get_MyData"
   End With
  End With
End Sub

↓標準モジュールへ

Sub Get_MyData()
  Dim i As Integer
 
  If VarType(Application.Caller) <> 8 Then Exit Sub
  With ActiveSheet.ListBoxes(1)
   For i = 1 To .ListCount
     If .Selected(i) Then
      MsgBox .List(i) & " が選択されています"
     End If
   Next i
   .Delete
  End With
  ActiveSheet.Buttons.Delete
End Sub

【24944】Re:プルダウンについて
質問  nossori  - 05/5/14(土) 22:58 -

引用なし
パスワード
   ▼Kein さん:

横から邪魔します。教えていただきたいのですが…
>ダブルクリックしたセルの位置に、複数選択できるフォームのリストボックスを配置し、
と書かれていますが、どのような事を意味しているのでしょうか?
ダブルクリックするとA〜Fのスクロールが、入力規則のように
出ますが…
ユーザフォームを作成してリストボックスを作ると言う意味でしょうか?

>その下にボタンを配置します。
ここでのボタンは具体的には何のボタンでしょうか?

>リストで任意の値を選択した後ボタンを押すと、
>選択した文字がメッセージされます。

【24945】Re:プルダウンについて
発言  Kein  - 05/5/14(土) 23:22 -

引用なし
パスワード
   >ユーザフォームを作成してリストボックスを作ると言う意味
ではありません。シート上に直接コントロールを配置しています。
その場合Excel5.0以来使われている「フォームツールバー」のコントロールと
Excel97以降に使われている「コントロールツールボックス」のコントロール(ActiveX)
があるのですが、私のコードはこのうち「フォームツールバー」にあるリストボックスを
動的に配置する。というやり方にしています。

>ここでのボタンは具体的には何のボタンでしょうか?
ボタンの種類は、もちろんフォームツールバーのボタンです。
役割としては、リストボックスで選択した値を判定・確定させるためのプロシージャを
呼び出すことです。そのプロシージャは、リストボックスに直接登録することも
可能なのですが、そうすると一つのリストを選択するたび、あるいはスクロールバー
を操作しようとしたときも、勝手に動作してしまう(これはフォームのリストボックス
の仕様となっている)ため、リストボックスで全ての目的の値を選択した後、ボタンを
押して呼び出すという形にしたわけです。

9892 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free