VBAでテーブル化した情報を取得して開発につかってみよう
テーブル化したデータならもっと速く開発できるんじゃね?

と思い、使いそうなものをコード化してみた。今回のコードをつかってあなたも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
事務作業を自動化してもっと"ラク"しませんか?

あなたの会社の事務作業...効率化してラクに。もっと重要な業務に集中できるようになります。

日々増えるルーティンの事務作業...
「この作業めんどくさい...」
「事務作業に時間をとられて他に集中できない...」

あなたの代わりにVBAを使ってパソコン業務を自動化。あなたはもっと価値のあることに時間を使うことができるため売上UP、ムダなコストの削減が期待できます。

また、作って終わりではなくつぎの3つのことを約束します。

  • しっかりドキュメント作成
  • きれいな見やすいコードでムダな工数カット
  • できるだけボタン1つポチッと押すだけで業務が完了

どんなにささいなめんどくさい事務作業でも相談してください。相談は無料です。
3年の業務効率化実績があるため、力になれるかもしれません。

※件名には「業務効率化の相談」と記載ください。できるだけ24時間以内に返信します。