テーブル化したデータならもっと速く開発できるんじゃね?
と思い、使いそうなものをコード化してみた。今回のコードをつかってあなたもVBAで早く開発できるようにしてみよう。
テーブル化したヘッダー情報の取得
- ヘッダー名リスト(2次元配列)を取得する
- ヘッダーの範囲を取得する
- ヘッダーがあるセル行番号を取得する
- ヘッダーのセル最終列を取得する
と、まあヘッダーで使いそうなものをまず4つ。それぞれコードをコピペしてつかってくれ。
ヘッダー名リスト(2次元配列)を取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim header_name_lists As Variant header_name_lists = DataSheet.ListObjects("testTable").HeaderRowRange ' -- Results -- ' header_name_lists(1, 1) "name" ' header_name_lists(1, 2) "age"
ヘッダーの範囲を取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim header_range As String header_range = DataSheet.ListObjects("testTable").HeaderRowRange.Address ' -- Result -- ' $A$1:$B$1
ヘッダーがあるセル行番号を取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim header_row As Long header_row = DataSheet.ListObjects("testTable").HeaderRowRange.Row ' -- Result -- ' 1
ヘッダーのセル最終列を取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim last_header_column As Variant last_header_column = DataSheet.ListObjects("testTable").HeaderRowRange.Count ' -- Result -- ' 2
テーブル化したデータ情報の取得
- データリストを2次元配列として取得する
- データが挿入されている最初のセル行番号を取得する
- データが挿入されている最後のセル行番号を取得する
ここでは実際のデータ情報と、つかいそうな行番号を取得していく。
データリストを2次元配列として取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim data_lists As Variant With DataSheet.ListObjects("testTable") If Not .DataBodyRange Is Nothing Then data_lists = .DataBodyRange End If End With ' -- Results -- ' data_lists(1, 1) "さいとう" ' data_lists(1, 2) 29
データが挿入されている最初のセル行番号を取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim first_row As Long With DataSheet.ListObjects("testTable") If Not .DataBodyRange Is Nothing Then first_row = .DataBodyRange.Row Else first_row = 0 End If End With ' -- Result -- ' 2
データが挿入されている最後のセル行番号を取得する
' シートオブジェクト名: DataSheet, テーブル名: testTable Dim last_row As Long With DataSheet.ListObjects("testTable") If Not .DataBodyRange Is Nothing Then Dim data_lists As Variant: data_lists = .DataBodyRange Dim header_row As Long: header_row = .HeaderRowRange.Row If UBound(data_lists) = 1 Then last_row = 1 + header_row Else last_row = UBound(data_lists) + header_row End If Else last_row = 0 End If End With ' -- Result -- ' 40