goo blog サービス終了のお知らせ 

パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

リストボックスの最大列数について(Excel VBA)

2013-03-17 13:45:20 | ExcelVBA
拙著「ExcelVBAプログラミング ユーザーフォーム&コントロールパネル」に関して
リストボックスの列数の設定についての質問をしばしばいただきます。

リストボックスの列数の設定は、ColumnCountプロパティでおこないます。

今回は、最大何列まで可能なのか、検証してみたいと思います。

Excelを起動したら、Visual Basic Editorを開き、ユーザーフォームを挿入します。
任意の大きさにしたら、コマンドボタンとリストボックスを追加します。
それぞれ、「btn1」と「ListBox1」という名前にします。




このユーザーフォームのInitializeイベントに、列数と列幅の設定をコーディングします。
なお、画像にはコメントアウトしてしてあるコードがありますが、
これはあとで検証するためのコードです。今は気にしないでください。


今回は、リストボックスの列数を25列にしました。
そして、各列の幅を全て30ptにしました。
列幅を狭くすることによって、できるだけ横スクロールしないですむようにしたつもりです。
Private Sub UserForm_Initialize()
    With ListBox1
        .ColumnCount = 25   '列数を25に設定 次の行で列幅を設定
        .ColumnWidths = "30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30;30"
    End With
End Sub

続いて、btn1をクリックしたときの処理をコーディングします。

リストボックスに1行追加し、
その後ループ処理で、その行の各列に値を設定していきます。
もし、エラーが発生したら、その時のカウンター変数 i の値と
エラーメッセージを表示するようにします。

なお、画像のループ回数が15になっていますが、大目に見てください。


Private Sub btn1_Click()
Dim i As Integer
ListBox1.AddItem
On Error GoTo eh
For i = 0 To 25
ListBox1.List(0, i) = i & "列目"
Next
Exit Sub
eh:
Dim msg As String
msg = "変数 i の値: " & i & vbNewLine
msg = msg & Err.Number & ":" & Err.Description
MsgBox msg
End Sub







さて、このユーザーフォームを表示し、ボタンをクリックすると

次の画像のようにエラーメッセージが表示されます。




列数は25と指定しているのに、10列しか表示できないことになります。
このことから、最大10列という制約があると考えられます。


ちなみに、もう一つ実験をしてみましょう。

シートの1行目に値を入力しておきます。分かりやすいように0から始まる数字に「列」をつけておきます。
今回は、Y列まで入れておきました。





次に、ユーザーフォームのInitializeイベントに、次の1行コードを追加します。

ListBox1.RowSource = "A1:Y1"

リストボックスのRowSource プロパティにセル範囲を指定しています。
リストボックスに値を表示するには、このようにRowSource プロパティを使うこともできます。
RowSource プロパティのセル範囲がリストボックスに表示されます。




改めてユーザーフォームを表示してみましょう。

今度は、25列までリストボックスに表示されました。




このように、RowSource プロパティを使うと、10行の制約は無視されます。
このあたりが、リストボックスの不思議なところだと感じてしまいます。

ただし、最大何列まで表示されるかは、まだ僕も試していません。

よろしかったら、皆さんもお試しください。結果を教えていただけると幸いです。


だい

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« スマートフォン おすすめアプ... | トップ | スマートフォンでフルセグテ... »
最新の画像もっと見る

1 コメント(10/1 コメント投稿終了予定)

コメント日が  古い順  |   新しい順
めぐみです! (めぐみ)
2013-03-20 08:27:41
めぐみです!このあいだコメントしためぐみです!覚えてますか?覚えていてくれた嬉しいですwo(*^▽^*)o~♪せっかくなのでメールできませんか?私ブログとかやってないのでお話がしたいです、アドは megumi7704あっとyahoo.co.jpです、待ってますね!(*゜ー゜*)ポッ
返信する

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。

ExcelVBA」カテゴリの最新記事