Excel VBA質問箱 IV

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

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


5453 / 76732 ←次へ | 前へ→

【76892】Re:リストボックスの作成について
発言  β  - 15/4/3(金) 15:43 -

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

事前準備の手順もすべて事細かに・・というと荷が重いですが
なんとか、できるだけわかりやすいコメントとするように努力します。

1.まず、シート上のどこかに、リストボックスに表示したい内容を、縦に入力してください。
  これは別シートでも構いません。
2.で、操作するシート上で。
 1)開発タブをクリックしてください。
 2)開発タブにある挿入を選んでください。
 3)でてきたダイアログ、下半分のActiveXコントロールからリストボックスを選んでください。
   (左から4番目だと思います)
 4)それを、シート上の適当な場所に貼り付けます。大きさは適当に。
 5)そのリストボックスを右クリック、プロパティを選んでください。
 6)プロパティウィンドウの中の ListFIllRange に 1.でセットした領域をいれてください。
   A1:A10 とか Sheet2!A1:A10 とか。
 7)MultiSelect を 2 fmMultiSelectExtended か 1 fmMultiSelectMulti にしてください。
   (これによって複数選択時の操作が異なります。詳しくは以下を参照してください)
   ht p://officetanaka.net/excel/vba/tips/tips144.htm
 8)Visible を False にしてください。
 9)プロパティウィンドウを左上のXボタンで閉じてください。
3.開発タブ上のデザインモードが強調表示になっていますので、これをクリックしてデザインモードを終了。
  リストボックスが消えましたね。
4.シートタブを右クリックしてコードの表示を選んでください。
  でてきたところ(VBE画面、シートモジュール)に下にアップするコードを貼り付け、VBE画面の
  左上のXボタンでVBE画面を閉じてください。

これで、任意のセルでダブルクリックすると、その右側にリストボックスが表示され、そこで選択したものが
ダブルクリックしたセル以降に転記されます。
他のセルをクリックするとリストボックスが消えます。

Option Explicit

Dim stp As Boolean

Private Sub ListBox1_Change()
  Dim i As Long
  Dim x As Long
  Dim W As Variant
  
  If stp Then Exit Sub
  
  ReDim W(1 To ListBox1.ListCount)
  
  With ListBox1
    For i = 0 To .ListCount - 1
      If .Selected(i) Then
        x = x + 1
        W(x) = .List(i)
      End If
    Next
    
    If x = 0 Then Exit Sub
    
    ReDim Preserve W(1 To x)
    
    .TopLeftCell.Offset(, -1).Resize(x).Value = WorksheetFunction.Transpose(W)
    
  End With
  
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim i As Long
  Cancel = True
  stp = True
  With ListBox1
    .Top = Target.Top
    .Left = Target.Left + Target.Width
    For i = 0 To .ListCount - 1
      .Selected(i) = False
    Next
    .Visible = True
  End With
  stp = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  ListBox1.Visible = False
End Sub

216 hits

【76890】リストボックスの作成について よぽん 15/4/3(金) 14:09 質問[未読]
【76892】Re:リストボックスの作成について β 15/4/3(金) 15:43 発言[未読]
【76893】Re:リストボックスの作成について β 15/4/3(金) 15:47 発言[未読]

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