VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 リストボックス関係のメニュー
1.リストボックス(ListBox)で良く使用するワンポイント設定集
2.API を使ってのリストボックス(ListBox)ワンポイント設定集
3.リストボックス(ListBox)に横スクロールバーを設定
4.リストボックス(ListBox)でマウスのドラッグ・アンド・ドロップで行の移動
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載しているリストボックスに関するサンプル


1.リストボックスで良く使用するワンポイント設定集
1.実行時にリストボックス(ListBox)に新しい項目を追加する
2.リストボックス(ListBox)の指定行を選択状態にする
3.リストボックス(ListBox)の指定行のデータを取得する
4.リストボックス(ListBox)で選択されている項目を取得する
5.リストボックス(ListBox)に項目を追加挿入する
6.リストボックス(ListBox)の指定行の項目を書き換える
7.リストボックス(ListBox)の指定行を削除する
8.リストボックス(ListBox)の指定行をトップ位置に設定する
9.リストボックス(ListBox)の選択した項目をクリップボードにコピーする
10.CSVファイルを読み込み複数列をリストボックス(ListBox)に表示
11.リストボックス(ListBox)に表示されているデータをテキストファイルに保存する
12.リストボックス(ListBox)で項目を右揃えで表示する
13.2つのリストボックス(ListBox)のスクロールの同期をとる
14.
15.



 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Excel 2010
Option :[Option Explicit]
参照設定:
使用 API:

その他 :
    :
このページのトップへ移動します。 1.実行時にリストボックス(ListBox)に新しい項目を追加する   

Private Sub Form_Load()
  '実行時にリストボックス(ListBox)に新しい項目を追加する
  With List1
    .AddItem "あいうえお"
    .AddItem "かきくけこ"
    .AddItem "さしすせそ"
    .AddItem "たちつてと"
    .AddItem "なにぬねの"
    .AddItem "はひふへほ"
    .AddItem "まみむめも"
    .AddItem "や ゆ よ"
    .AddItem "らりるれろ"
    .AddItem "わをん"
  End With
End Sub

このページのトップへ移動します。 2.リストボックス(ListBox)の指定行を選択状態にする

Private Sub Command1_Click()
  '指定の行を選択状態にする
  List1.Selected(CInt(Text1.Text) - 1) = True
End Sub

  図1.上記実行結果
 listbox01_01.gif
ワザワザ、画像を付けるまでもないのですが、使用コントロールや配置図もかねて載せておきます。

このページのトップへ移動します。 3.リストボックス(ListBox)の指定行のデータを取得する

Private Sub Command1_Click()
  'リストボックス(ListBox)の指定行のデータを取得する
  Label1.Caption = List1.List(CInt(Text1.Text) - 1)
End Sub

このページのトップへ移動します。 4.リストボックス(ListBox)で選択されている項目を取得する

Private Sub Command1_Click()
  '選択状態の場合なら(複数選択されている場合は、最後に選択した項目)
  Label1.Caption = List1.Text

  '複数の項目を選択した場合の取得
  'List1.MultiSelect = 1
  Dim i As Long
  For i = 0 To List1.ListCount - 1
    If List1.Selected(i) Then
      Debug.Print List1.List(i), i + 1
    End If
  Next i
End Sub

このページのトップへ移動します。 5.リストボックス(ListBox)に項目を追加挿入する

Private Sub Command1_Click()
  List1.AddItem "★行末に追加挿入する場合★"

  List1.AddItem "★5行目に新たに追加する場合★", 5 - 1
End Sub

このページのトップへ移動します。 6.リストボックス(ListBox)の指定行の項目を書き換える

Private Sub Command1_Click()
  '指定行の項目を書き変えます
  List1.List(5 - 1) = "☆5行目を書換えました★"
End Sub

このページのトップへ移動します。 7.リストボックス(ListBox)の指定行を削除する

Private Sub Command1_Click()
  '指定行(3行目)の項目を削除します
  List1.RemoveItem 3 - 1

  '複数選択されている場合の削除方法(逆順に削除の事)
  Dim i As Integer
  For i = List1.ListCount - 1 To 0 Step -1
    If List1.Selected(i) Then
      List1.RemoveItem i
    End If
  Next i

  '全て削除する場合
  List1.Clear

End Sub

このページのトップへ移動します。 8.リストボックス(ListBox)の指定行をトップ位置に設定する

Private Sub Command1_Click()
  '指定行をトップ位置に設定します
  List1.TopIndex = 5
End Sub

このページのトップへ移動します。 9.リストボックス(ListBox)の選択した項目をクリップボードにコピーする

Private Sub Command1_Click()
  '選択した項目をクリップボードにコピー
  Dim i    As Long
  Dim ListDate As String
  With List1
    For i = 0 To .ListCount - 1
      If (.Selected(i)) Then
        ListDate = ListDate & .List(i) & vbCrLf
      End If
    Next i
  End With
  'クリップボードを初期化
  Clipboard.Clear
  'クリップボードにコピー
  Clipboard.SetText ListDate
End Sub

このページのトップへ移動します。 10.CSVファイルを読み込み複数列をリストボックス(ListBox)に表示
fStrCut 関数及び fPadLeft 関数及び使用するデータは、MSFlexGrid/MSHFlexGrid に表示中のデータを罫線付きで印刷するで使用している物をお使い下さい。
 
Private Sub Command1_Click()
  List1.Clear
  List1.Visible = False
  Dim myString As String
  Dim lngFileNo As Long
  lngFileNo = FreeFile
  Open "dbtest.CSV" For Input As #lngFileNo
  Do Until EOF(lngFileNo)
    Line Input #lngFileNo, myString
    Dim myTxt() As String
    myTxt = Split(Replace(myString, """", ""), ",")
    If List1.ListCount = 0 Then
      List1.AddItem fStrCut(myTxt(1), 12) & fStrCut(myTxt(5), 10) & fStrCut(myTxt(6), 10)
    Else
      List1.AddItem fStrCut(myTxt(1), 12) & fPadLeft(Format$(myTxt(5), "#,### "), 9, " ") & _
                         fPadLeft(Format$(myTxt(6), "#,### "), 9, " ")
    End If
  Loop
  Close #lngFileNo
  List1.Visible = True
End Sub

  図2.上記実行結果
 listbox01_02.gif

表示データを取り出す場合は、MID 関数等で、Trim$(Mid$(List1.List(3), 12, 9)) のようにして抜き出して下さい。

このページのトップへ移動します。 11.リストボックス(ListBox)に表示されているデータをテキストファイルに保存する

Private Sub Command1_Click()
  Dim i     As Long
  Dim intFileNo As Integer
  Dim strListTxt As String
  For i = 0 To List1.ListCount - 1
    strListTxt = strListTxt & List1.List(i) & vbCrLf
  Next i
  intFileNo = FreeFile
  Open "ListTest.txt" For Output As #intFileNo
  Print #intFileNo, strListTxt
  Close #intFileNo
End Sub

リストボックス(ListBox)で使用しているコードは、ほとんどの物が、コンボボックスでも使用できます。
又、その逆にコンボボックスで使用しているコードは、リストボックス(ListBox)でも使用できますので双方のコードを見比べ活用するようにして下さい。
上記のファイルの読み込みや保存のコードは、同じです。

このページのトップへ移動します。 12.リストボックス(ListBox)で項目を右揃えで表示する

Private Sub Form_Load()
  With List1
    .Clear
    .Move 100, 100, 2800, 1500
    .FontName = "MS ゴシック"
    .FontSize = 12
    .AddItem fPadLeft("あ1いう", 22, " ")
    .AddItem fPadLeft("あ12いうえ", 22, " ")
    .AddItem fPadLeft("あ123いうえお", 22, " ")
    .AddItem fPadLeft("あ1234いうえおか", 22, " ")
    .AddItem fPadLeft("あ12345いうえおかき", 22, " ")
  End With
End Sub

'半角・全角が混在するような場合は、下記をお使い下さい。
Private Function fPadLeft(ByVal myData As String, ByVal CutLen As Long, ByVal CutStr As String) As String
'文字を右寄せし、指定した文字列の文字数になるまで左側に指定した文字(0 や " " 等)を埋め込みます。
  Dim tmp As String
  tmp = StrConv(RightB$(StrConv(String$(CutLen, CutStr) & myData, vbFromUnicode), CutLen), vbUnicode)
  fPadLeft = tmp
End Function

このページのトップへ移動します。 13.2つのリストボックス(ListBox)のスクロールの同期をとる
フォームにリストボックスを2個貼り付け下記コードをペーストして試して下さい。
後は、どちらか一方だけの設定でいいと思います。

Option Explicit

Private Sub Form_Load()
  Dim i As Long
  For i = 65 To 122
    List1.AddItem Chr(i)
    List2.AddItem Chr(i)
  Next i
End Sub

Private Sub List1_Scroll()
  List2.TopIndex = List1.TopIndex
End Sub

Private Sub List2_Scroll()
  List1.TopIndex = List2.TopIndex
End Sub

このページのトップへ移動します。 14.


このページのトップへ移動します。 15.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
リストボックスに関するサンプル集 ListBoxに関するサンプル集




このページのトップへ移動します。