人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBA でのリストボックスの質問です。

ユーザーフォームにリストボックスを設置し3列の表示をしたいと思います。

1列目にシート1のA列を表示し、2列目にシート1のD列を表示し。3列目にB列を表示したいのですがこの場合、どのように設定すればいいのでしょうか?

●質問者: iwasakitetsurin
●カテゴリ:コンピュータ
✍キーワード:エクセル ボックス ユーザー リスト
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●35ポイント ベストアンサー

作業シートを作って各列をコピーして一つの範囲にしてしまうと、

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
◎質問者からの返答

丁寧に回答を有難う御座いました。

参考になりました。

無事に解決致しました。


2 ● きゃづみぃ
●35ポイント

リストボックスのオブジェクト名は、

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行目をセットしています。

◎質問者からの返答

丁寧に回答を有難う御座いました。

参考になりました。

無事に解決致しました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ