例えばこんな感じ。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20130529/08/gidgeerock/14/e7/p/t02200126_0441025212556282872.png?caw=800)
元のデータはこんな感じです。スポーツ店の売上データです。
勝手に作りました。全くバリエーションがありません(笑)。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20130529/08/gidgeerock/af/7e/p/t02200078_0800028312556282873.png?caw=800)
リストをスクロールさせても項目名が表示されるので便利ですね。
結論ですが、Word マクロで同じことをしようとしてもできません。
【理由】
上記のようにリストボックスに列の項目名を表示させるためには、リストボックスのプロパティで .ColumnHeads = True として、データを RowSource プロパティで参照します。
配列をそのままリストボックスに入れるだけでは、.ColumnHeads = True としても最初に空の行が表示されるだけです。
例えば、以下のようにListプロパティでデータを参照した場合には、1行目が空欄になっています。
![みんなのワードマクロ](https://stat.ameba.jp/user_images/20130529/08/gidgeerock/68/4c/p/t02200126_0441025212556282874.png?caw=800)
Excelマクロでは、データを RowSource プロパティで参照できますから、列の項目名をリストボックスの1行目に列挙できます。
これはかなり便利な機能ですよね。
しかし、Wordのリストボックスにてデータを参照する場合(たとえば、WordからExcelを起動して特定ファイルのセルを参照する場合)、RowSourceプロパティを使うことができません。結果、Wordでは項目名を表示できないのです。残念!!
Listプロパティを使えばデータの取得はできますよ。
【参考マクロ】
Excelのサンプルマクロです。
RowSourceプロパティ にてデータを参照する場合
→項目名が表示されます。
Private Sub UserForm_Initialize()
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = "100;50;30;50"
.RowSource = "A2:D11"
.ColumnHeads = True
End With
End Sub
Listプロパティにてデータを参照する場合
→項目名が表示されません。
Private Sub UserForm_Initialize()
With Me.ListBox1
.ColumnCount = 4
.ColumnWidths = "100;50;30;50"
.List = Range("A2:D11").Value
.ColumnHeads = True
End With
End Sub
▼関連記事
ユーザーフォームを表示したまま文書を編集
How do you set the column heads for a combobox?