検索
タグクラウド
プロフィール
yoshimatsuさんの画像
yoshimatsu
60過ぎのおっちゃんです。同じ年齢層の中ではそこそこパソコンが使える方だと自負しています。今まで会社等で学んだ知識等を紹介していきたいと思います。

広告

posted by fanblog

2017年07月04日

ExcelVBA入門リストボックス








マイクロソフトアクセスの記事はこちら

人気ブログランキングへ



にほんブログ村 IT技術ブログ ソフトウェアへ
にほんブログ村

エクセル上にリストがあってそこから読み出す場合の方法


リストB8.png

Excel上に上のようなリストがあったとします。

Private Sub CommandButton2_Click()

ListBox1.List = Range("F2:G17").Value

End Sub

上記のように範囲を指定(Range("F2:G17"))することも可能です。

これを実行すると下のようになります。

リストB9.png

またこのような記述も可能です。

Private Sub CommandButton2_Click()

Dim i As Long

With ListBox1

For i = 2 To 17

.AddItem

.List(.ListCount - 1, 0) = Cells(i, 6)

.List(.ListCount - 1, 1) = Cells(i, 7)

Next i

End With

End Sub

上記はFor〜Nextを使用して、2行目から17行目までをリストにしています。

これも同じ結果が得られます。

また、将来的にリストに追記される場合も加味して考えてみましょう。

Private Sub CommandButton2_Click()

Dim i As Long

For i = 2 To Cells(Rows.Count, 6).End(xlUp).Row

ListBox1.AddItem Cells(i, 6)

Next i

End Sub

上記のように記述します。

リストB10.png

結果は上のようになります。

少しVBAの記述について説明しましょう。

「Cells(Rows.Count, 6).End(xlUp).Row」ここが分かりにくいですね。

ここで最終行の取得を行っています。

通常データはドンドン縦(行)に増えていく傾向にあります。

そのような時、リスト範囲を限定出来ない時があります。

そのために最終行の取得を行う必要があります。

「6」というのは、現在リストがF列にあるのでアルファベットで

6番目なので「6」になっています。

Rows.Countですが、一旦一番下のセルに移動するという意味です。

「Ctrl」+「↓」で一番下まで行きますね。Excel2010なので「1048576行」に移動します。

次にEnd(xlUp)ですが、これは「Ctrl」+「↑」になり、一番下の行から上に向かって

移動します。

今回の場合データ範囲はF2〜F17なので17行目まで移動します。

これでForの繰り返しが2〜17になりますね。

また別の方法として下記のような記述も出来ます。

Private Sub CommandButton2_Click()

ListBox1.List = Range(Range("f2"), Cells(Rows.Count, 6).End(xlUp)).Value

End Sub








この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/6437297
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: