ユーザーフォームにリストボックスを設置し3列の表示をしたいと思います。
1列目にシート1のA列を表示し、2列目にシート1のD列を表示し。3列目にB列を表示したいのですがこの場合、どのように設定すればいいのでしょうか?
作業シートを作って各列をコピーして一つの範囲にしてしまうと、
RowsorceプロパティやListプロパティが使えそうですが、作業シートを作らない方法でやってみました。
あまりスマートな方法ではありませんが。
UserFormのInitializeイベントで配列に読み込ませて設定する方法です。
Private Sub UserForm_Initialize() Dim LastRow1 As Long Dim LastRow2 As Long Dim LastRow3 As Long Dim MaxRow As Long Dim myData() As String Dim i As Long LastRow1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row LastRow2 = Sheet2.Range("D" & Rows.Count).End(xlUp).Row LastRow3 = Sheet3.Range("B" & Rows.Count).End(xlUp).Row If LastRow1 > LastRow2 Then MaxRow = LastRow1 End If If LastRow3 > MaxRow Then MaxRow = LastRow3 End If ReDim myData(2, MaxRow) For i = 1 To MaxRow myData(0, i - 1) = Sheet1.Range("A" & i).Value myData(1, i - 1) = Sheet2.Range("D" & i).Value myData(2, i - 1) = Sheet3.Range("B" & i).Value Next i With ListBox1 .ColumnCount = 3 .ColumnWidths = "50;50;50" .Column = myData End With End Sub
作業シートを作って各列をコピーして一つの範囲にしてしまうと、
RowsorceプロパティやListプロパティが使えそうですが、作業シートを作らない方法でやってみました。
あまりスマートな方法ではありませんが。
UserFormのInitializeイベントで配列に読み込ませて設定する方法です。
Private Sub UserForm_Initialize() Dim LastRow1 As Long Dim LastRow2 As Long Dim LastRow3 As Long Dim MaxRow As Long Dim myData() As String Dim i As Long LastRow1 = Sheet1.Range("A" & Rows.Count).End(xlUp).Row LastRow2 = Sheet2.Range("D" & Rows.Count).End(xlUp).Row LastRow3 = Sheet3.Range("B" & Rows.Count).End(xlUp).Row If LastRow1 > LastRow2 Then MaxRow = LastRow1 End If If LastRow3 > MaxRow Then MaxRow = LastRow3 End If ReDim myData(2, MaxRow) For i = 1 To MaxRow myData(0, i - 1) = Sheet1.Range("A" & i).Value myData(1, i - 1) = Sheet2.Range("D" & i).Value myData(2, i - 1) = Sheet3.Range("B" & i).Value Next i With ListBox1 .ColumnCount = 3 .ColumnWidths = "50;50;50" .Column = myData End With End Sub
丁寧に回答を有難う御座いました。
参考になりました。
無事に解決致しました。
リストボックスのオブジェクト名は、
ListBox1
フォーム名は、
UserForm1
でセットしています。
UserForm1.ListBox1.Clear UserForm1.ListBox1.AddItem (Sheets("シート1").Cells(1, "A")) UserForm1.ListBox1.AddItem (Sheets("シート1").Cells(1, "D")) UserForm1.ListBox1.AddItem (Sheets("シート1").Cells(1, "B"))
それぞれセットする列は指定してありますが、どの行かは 不明なため 1行目をセットしています。
丁寧に回答を有難う御座いました。
参考になりました。
無事に解決致しました。
丁寧に回答を有難う御座いました。
参考になりました。
無事に解決致しました。