テーマ:プログラミングあれこれ(230)
カテゴリ:VBA
前回はタイトル行に絞って記載した。
データ行、全体行の3パターンで記載してみる とのことで記載したが、ちょっと変更させて頂こうと思う。 今回は前回伝えきれなかった、データ行、全体行 という区分けではなく、列の指定方法について 記載してみる。 ※必然的に次回は行の指定方法になるわけだが、、 -------------------------------------- ①Range("テーブル名").ListObject.ListColumns ②Range("テーブル名").ListObject.ListColumn -------------------------------------- 以下画像は前回のものから「テーブル列取得」 というボタンを新たに追加してみた。 ボタンを押下した時に14、15行目にデータを 転記する、というシンプルなものを作成。 転記する元データはテーブル1のタイトル部と データ部の1行目を対象にしている。 ソース Sub getTableColumns() ' 列名をセルに表示 Range("B14").Value = Range("テーブル1").ListObject.ListColumns(1) Range("C14").Value = Range("テーブル1").ListObject.ListColumns(2).Name Range("D14").Value = Range("テーブル1").ListObject.ListColumns("値段") Range("E14").Value = Range("テーブル1").ListObject.ListColumns("日付").Name ' 列データをセルに表示 Range("B15").Value = Range("テーブル1").ListObject.ListColumns(1).Range(2) Range("C15").Value = Range("テーブル1").ListObject.ListColumns(2).Range(2).Value Range("D15").Value = Range("テーブル1").ListObject.ListColumns("値段").DataBodyRange(1) Range("E15").Value = Range("テーブル1").ListObject.ListColumns("日付").DataBodyRange(1).Value End Sub 結果 .ListColumns →テーブルに存在する全列(データ部含む)を表す。 .ListColumns(1) →テーブルの1列目を表す。(=.ListColumn) ※この場合「お店」列 .Nameはつけてもつけなくても良いがパターンとして記載してみた。 .ListColumns(1).Range(2) →「お店」列の2つ目の値を表すので、上記画像の場合、 "八百屋A"となる。 ちなみに.ListColumns(1).Range(1)とすると タイトルである"お店"が転記される。 .ListColumns("値段").DataBodyRange(1) →「値段」列のデータ部の1つ目を表すので、 上記画像の場合、"150"となる。 同じく、.ListColumns("値段").DataBodyRange(0)とすると データ部の0番目(そんなのないが、、)である、 "値段"、すなわちタイトル部が転記される。 ※あまりこういう使い方することは無いと思うが、 エラーにはならず、値として取得できる為、一応記載。 テーブルと列、データの関係を簡単に 色分けして、範囲で表してみた。 次回は、行についての指定方法を記載する予定。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2020.09.22 23:44:15
コメント(0) | コメントを書く
[VBA] カテゴリの最新記事
|