ステートメント制御文の使用例11


使用例11

リストボックスに複数列の全データを表示する (3種類)


 


AddItem メソッドを使う方法
-----------------------------
Private Sub UserForm_Initialize()
  '1行目タイトル
  ListBox1.AddItem Cells(1, 1) & " " & _
                   Cells(1, 2) & " " & _
                   Cells(1, 3)
                   
  '3列全データ表示
  For i = 2 To 11
    ListBox1.AddItem Cells(i, 1) & "    " & _
                     Cells(i, 2) & "    " & _
                     Cells(i, 3)
  Next i
End Sub

Private Sub CommandButton1_Click()
  Unload Me
End Sub


RowSource プロパティを使う方法
---------------------------------
Private Sub UserForm_Initialize()
  Dim Dt As String    'シートデータ範囲
     
  'リストボックスを3列に分割
  ListBox1.ColumnWidths = "30;30;30"
  ListBox1.ColumnCount = 3
  
  '1行目タイトル
  ListBox1.ColumnHeads = True
  
  '3列全データ表示
  Dt = "A2:C11"
  ListBox1.RowSource = Dt
End Sub

Private Sub CommandButton1_Click()
  Unload Me
End Sub


ADO ドライバ と SQL 文 を使う方法
------------------------------------
Private Sub UserForm_Initialize()
  
  'ADO ドライバーを使用して、エクセルのデータ
  'ファイルをデータベースとし、SQL文 を使って
  'リストボックスに3列全データを読み込む方法
  '(演習30〜36 を参照)
  
  'VBE-ツール-参照設定において 次をチェック
  'Microsoft ActiveX Data Objects 2.1 Library
  
  Dim Dbs As New ADODB.Connection  'ADOコネクション
  Dim Rcs As New ADODB.Recordset   'ADOレコードセット
  Dim mydbC As String              'エクセルコネクション
  Dim mydbF As String              'エクセルデータファイル
  Dim myQry As String              'クエリ文
  Dim Rcd As Integer               'エクセルレコード表示行
  
  'エクセルデータファイル指定
  '(事前に作成して、同一フォルダに保存しておく)
  mydbF = "test16fa.xls"
  
  'エクセルデータベース接続設定
  mydbC = _
    "Driver={Microsoft Excel Driver (*.xls)};" & _
    "DBQ=" & ThisWorkbook.Path & "\" & mydbF & ";"
    
  'クエリ文
  myQry = "Select * From [Sheet1$];"  'シート読み込み

  'エクセルデータベース接続
  Dbs.Open "Provider=MSDASQL;" & mydbC
  
  'レコードセットを開く
  Rcs.Open Source:=myQry, ActiveConnection:=Dbs
 
  'エクセルカレントシートに読み込み
  With Rcs
    'フィールド名(タイトル行)
    For i = 1 To .Fields.Count
      Cells(1, i).Value = .Fields(i - 1).Name
    Next
  
    'レコード(データ)表示
    Range("A2").CopyFromRecordset Rcs
      
  'リストボックスに読み込み
    'リストボックスを3列に分割
    ListBox1.ColumnWidths = "30;30;30"
    ListBox1.ColumnCount = 3
    
    '1行目タイトル
    ListBox1.ColumnHeads = True
  
    '3列全データ表示
    Dt = "A2:C11"
    ListBox1.RowSource = Dt
    
    .Close
  End With
  Dbs.Close
  Set Rcs = Nothing
  Set Dbs = Nothing
End Sub

Private Sub CommandButton1_Click()
  Range("A1:C11").Clear
  Unload Me
End Sub

                                                                   back top