StudyLog

勉強の記録など。

ExcelVBA本格入門 Chapter12②

学習日:2024/08/09

参考書:ExcelVBA本格入門 技術評論社(著者 大村あつし)

12-3から12-4まで(P271-284)

 

【学習内容のまとめ】

  • フレームとは

    • コントロールを機能や目的ごとに分けて表示するための枠
    • フレームを使う場合は、最初にフレームを作成し、その枠の内側にコントロールを配置する
    • フレームをあとから作成すると、コントロールはフレームの後ろに隠れてしまい、独立したコントロールとなってしまう(その場合、コントロールを一度枠の外に出してフレームの内側に配置するとよい)
  • フレームを使ってグループを設定する

    • フレームの枠の内側にオプションボタンを配置すると、GroupNameプロパティを設定しなくてもフレームごとにグループが設定される
  • フレームは内側のコントロールの親オブジェクト

    • ユーザーフォーム上にコントロールを配置すると、ユーザーフォームが親オブジェクトになる
    • フレームの内側に配置したコントロールはフレームの子オブジェクトになる
    • 子オブジェクトが格納されている親オブジェクトは、コントロールのParentプロパティで取得できる
    • 親オブジェクトの機能を持つコントロールは、フレームのほかにマルチページがある

 

  • リストボックスとは

    • リストの中から1つあるいは複数の項目を選択することができる
    • 選択できる項目が1つか複数かは、プロパティの設定により使い分ける
  • リストに表示する項目を設定する

    • リストに表示する項目は、RowSourceプロパティでセル範囲を指定することで設定する
  • 複数列のデータを表示する

    • 複数列のセル範囲を指定したい時は、ColumnCountプロパティに列数を指定する
    • 複数の列がある場合列幅をColumnWidthプロパティで設定できる(ポイント単位でセミコロン()で区切る)
  • 選択されている項目を取得する

    • ListIndexプロパティは、リストボックスで選択されている行を取得できる

      1行目を選択している場合は0、2行目は1、行が選択されていない場合は-1を返す

    • TextプロパティとValueプロパティは、選択されている行の項目の値を取得できる

    • BoundColumnプロパティは、Valueプロパティにリストボックスの何列目のデータを保持するかを指定する

      1列目を指定する場合は1、2列目は2、0を指定するとListIndexプロパティの値がValueプロパティに指定される

    • TextColumnプロパティは、Textプロパティにリストボックスの何列目のデータを保持するかを指定する

      1列目を指定する場合は1、2列目は2、0を指定するとListIndexプロパティの値がTextプロパティに代入され、-1を指定するとColumnWidthプロパティが0より大きい列の中で、1番左(1番目)に表示される列の項目の文字列が代入される

  • 任意の位置の項目を取得する

    • Listプロパティは、指定された行と列の位置にある項目の値の取得や設定を行う

      オブジェクト名.List(row,column)

      第1引数rowには行番号、第2引数columnには列番号を指定、行と列は0から始まる

    • Columnプロパティも、指定された行と列の位置にある項目の値の取得や設定を行う

      オブジェクト名.Column(column,row)

      第1引数columnには列番号、第2引数rowには行番号を指定、行と列は0から始まる

  • 任意の行をリストの先頭に表示する

    • TopIndexプロパティを使うと、任意の行がリストの先頭に表示される
    • リストの行数がリストボックスの高さより少ない場合は機能しない
  • 複数行選択を可能にする

    • MultiSelectプロパティを、設定するとリストボックスで複数の行が選択できる

    • fmMultiSelectiMulti あるいは fmMultiSeletExtendedを設定する

    • MultiSelectプロパティを使うと、ValueプロパティやTextプロパティがNullとなり、選択されている項目を取得できなくなるため、選択されている行はSelectedプロパティを使って取得する

    • ListIndexプロパティにはフォーカスがある行の行番号が保持される

    • Selectedプロパティは、指定された行が選択されているかどうかを示すBoolean型の値を返す

      オブジェクト名.Selected(Index)

      引数Indexには0から始まる行番号を指定

    • Selectedプロパティを使ってマクロ内で任意の行を選択状態にすることもできる

    • リストボックスはマクロ実行中にリスト項目を追加したり削除したりすることもできる