リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

【本日のミッション】

リストボックスの値リストに列見出しを表示せよ。また、ColumnHeadsプロパティを使って列見出しが表示できない理由を解明せよ。

ミッションの概要

  • リストボックスの値リストに列見出しを表示せよ
  • ColumnHeadsプロパティを使っても列見出しが表示できない場合がある理由を解明せよ

というのが今回のミッションです。

RowSourceプロパティを使って 複数列のセル範囲とリストボックスの値リストをリンク設定(Excel VBA)で作ったリストを元にご説明いたします。

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
値リストの一番初めに列見出しが表示されます。
リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

リストボックスの値リストに列見出しを表示する設定

この設定は、プロパティウィンドウで行う方法と、コードに記述する方法の2つがあります。

リストボックスのプロパティに設定

プロパティウィンドウ(表示されていない場合は、[F4]キーで表示できます。)で ColumnHeads 「True」にします。

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

ColumnHeads以外に、ColumnCount、ColumnWidths、RowSource もリストボックスのプロパティにあらかじめ設定しておきます。(参照:RowSourceプロパティを使って 複数列のセル範囲とリストボックスの値リストをリンク設定(Excel VBA)

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)
リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

ユーザーフォーム Initializeにコード記述

Private Sub UserForm_Initialize ~ End Sub 内に下記の通り、コードを追加します。赤字部が列見出しを表示する設定になります。

Private Sub UserForm_Initialize()
    With ListBox1
        .ColumnCount = 4                '表示列数
        .ColumnHeads = True             '見出し有
        .ColumnWidths = "40;45;40;40"   '列幅
        .RowSource = "サザエさん!A2:D9" '参照範囲
    End With
End Sub

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

ユーザーフォームの実行

このコード内にカーソルを置いたまま、[F5]キーをクリックする(ユーザーフォームの実行)と、列見出し付きの値リストが表示されます。

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

今回は、[閉じる]ボタンを付けていないため[×]ボタンでユーザーフォームを閉じます。

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

■■■スポンサーリンク■■■

ColumnHeadsプロパティ

リストボックスに列見出しを表示する・表示しないを設定します。

内容
True列見出しを表示します。
False列見出しを表示しません。(既定値)

今回は「True」としているので、列見出しは表示されます。

ListBox1.ColumnHeads = True

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

ColumnHeadsプロパティを「True」にしているのに、列見出しが表示されない理由

ColumnHeadsプロパティを「True」にしているのに、列見出しが表示されない場合があります。

それは、値リストをListプロパティAddItemメソッドで作っている場合です。

ColumnHeadsプロパティの列見出しは、RowSourceプロパティで作った値リストでしか有効になりません。

RowSourceプロパティに指定したセル範囲の1行上のセル範囲が、見出しとして使用されます。

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

リストボックスの値リストに列見出しを表示する設定ColumnHeadsで見出しが設定できない理由(Excel VBA)

参考:RowSourceプロパティを使って 複数列のセル範囲とリストボックスの値リストをリンク設定(Excel VBA)
参考:AddItemメソッドを使ってリストボックスの値リストを設定する(Excel VBA)
参考:リストボックスにListプロパティを使って配列に格納した複数列のセルデータを値リストとして設定(Excel VBA)

【参考】

VBA(マクロ)作成の前、リボンに開発タブを表示させる(Excel VBA)
ユーザーフォームの作成方法 準備(Excel VBA)
ユーザーフォームのオブジェクトの名前を「UserForm1」から変更する方法(Excel VBA)
ユーザーフォームの上のバー(タイトルバー)の名前を「UserForm1」から変更する(Excel VBA)
ユーザーフォームのオブジェクトウィンドウとコードウィンドウを表示切替させる方法(Excel VBA)
「オブジェクト名が不正です」を出さないようにユーザーフォームオブジェクト名を命名規則に従って変更(Excel VBA)
エクセルファイルが開いた時にユーザーフォームを表示させる方法(Excel VBA)
エクセル フォームのラベルのテキストを縦書きにする方法(Excel VBA)
AddItemメソッドを使ってリストボックスの値リストを設定する(Excel VBA)
RowSourceプロパティを使ってセル範囲とリストボックスの値リストをリンク設定させる(Excel VBA)
RowSourceプロパティでリンク設定したリストボックス値リストにデータを追加・削除する(Excel VBA)
リストボックスにListプロパティを使って 配列に格納したセルデータを値リストとして設定する(Excel VBA)
既存のリストボックスの値リストにAddItemメソッドでデータを追加する(Excel VBA)
既存のリストボックスの値リストのデータを、Clearメソッドで全て削除して初期化する(Excel VBA)
既存のリストボックスの値リストの項目を1件 RemoveItemメソッドで削除する(Excel VBA)
リストボックス リストから初期値としてはじめに選択しておく値を設定する(Excel VBA)
リストボックスの値リストに設定された項目の件数を取得する(Excel VBA)
RowSourceプロパティを使って 複数列のセル範囲とリストボックスの値リストをリンク設定(Excel VBA)
リストボックスにListプロパティを使って配列に格納した複数列のセルデータを値リストとして設定(Excel VBA)
リストボックス 複数列の値リストの列幅を変えたり非表示にしたりする設定(Excel VBA)
リストボックスで選択しているデータがリストの上から何番目(インデックス値)かを取得(Excel VBA)
リストボックス 1列の値リストで選択しているデータをTextプロパティで取得(Excel VBA)
リストボックス 1列の値リストで選択しているデータをValueプロパティで取得(Excel VBA)
リストボックス 1列の値リストで選択しているデータをListプロパティで取得(Excel VBA)
リストボックス 複数列の値リストで選択しているデータを、列指定してTextプロパティで取得(Excel VBA)
リストボックス 複数列の値リストで選択しているデータを、列指定してValueプロパティで取得(Excel VBA)
リストボックス 複数列の値リストで選択しているデータを、列指定してListプロパティで取得(Excel VBA)
指定した行(インデックス値)のデータをリストボックスの値リストから選択する(Excel VBA)
リストボックスの値リストに列見出しを表示する設定/ColumnHeadsで見出しが設定できない理由(Excel VBA)

■■■スポンサーリンク■■■