VBA練習問題
VBA100本ノック 44本目:全テーブル一覧作成

VBAを100本の練習問題で鍛えます
最終更新日:2021-02-22

VBA100本ノック 44本目:全テーブル一覧作成


全シートの全テーブルの情報をシートに出力する問題です。


ツイッター連動企画です。
ツイートでの見やすさを考慮して、ブック・シート指定等を適宜省略しています。

VBAテスト用のサンプルデータは、VBA100本ノックの目次ページ からもダウンロードできます。
マクロVBAを初心者向けの基本から上級者向けの高度な内容までサンプルコードを掲載し解説しています。エクセル関数・機能・基本操作の入門解説からマクロVBAまでエクセル全般を網羅しています。


出題

出題ツイートへのリンク

#VBA100本ノック 44本目
ブック内の全シート全テーブルについて、以下の情報をシートに出力してください。
・A列にテーブル名(テーブル1)
・B列にシート名(Sheet1)
・C列にセル範囲($B$2:$F$12)
・D列にリスト行数(10)
・E列にリスト列数(5)
※()内は画像の出力例
※対象ブック及び出力シートは任意

マクロ VBA 100本ノック


サンプルファイルです。
https://excel-ubara.com/vba100sample/VBA100_44.xlsm
https://excel-ubara.com/vba100sample/VBA100_44.zip


VBA作成タイム

この下に頂いた回答へのリンクと解説を掲載しています。
途中まででも良いので、できるだけ自分でVBAを書いてみましょう。


他の人の回答および解説を見て、書いたVBAを見直してみましょう。


頂いた回答

解説

テーブルはListObjectです。
Workbook→Worksheets→Worksheet→ListObjects→ListObject
ListObjectには多くのプロパティがあります。
Range
ListRows
ListColumns
オブジェクトモデルをインテリセンス等を使いながらしっかり辿り目的のプロパティに到達する練習です。

Sub VBA100_44_01()
  Dim wb As Workbook
  Set wb = ActiveWorkbook
  
  Dim wsOut As Worksheet
  On Error Resume Next
  Set wsOut = wb.Worksheets("テーブル一覧")
  If Err Then Set wsOut = wb.Worksheets.Add(Before:=Worksheets(1))
  With wsOut
    .Name = "テーブル一覧"
    .Cells.ClearContents
    .Range("A1:E1").Value = Array("テーブル名", "シート名", "セル範囲", "リスト行数", "リスト列数")
  End With
  
  Dim ws As Worksheet, tobj As ListObject, i As Long
  i = 2
  For Each ws In wb.Worksheets
    For Each tobj In ws.ListObjects
      wsOut.Cells(i, 1).Value = tobj.Name
      wsOut.Cells(i, 2).Value = ws.Name
      wsOut.Cells(i, 3).Value = tobj.Range.Address
      wsOut.Cells(i, 4).Value = tobj.ListRows.Count
      wsOut.Cells(i, 5).Value = tobj.ListColumns.Count
      i = i + 1
    Next
  Next
End Sub


リスト行数・列数は、DataBodyRangeからも取得できます。
tobj.DataBodyRange.Rows.Count
tobj.DataBodyRange.Columns.Count
今回は特に補足はありません。
記事にはVBAコードを掲載しています。


補足

補足はありません。


サイト内関連ページ

第130回.テーブル操作の概要(ListObject)
・ListObjects コレクション ・ListObject オブジェクト ・テーブル操作のVBAコード
第131回.テーブル操作のVBAコード(ListObject,DataBodyRange)
・テーブル操作のVBAサンプル使用例 ・テーブルに設定 ・テーブルスタイル一覧 ・テーブルの存在確認 ・テーブルを範囲に変換 ・テーブルの範囲を再設定 ・テーブルのセルに値を入れる ・テーブルのセルの数式変更 ・テーブルの行・列のクリア ・テーブルの列の数式設定 ・テーブルの行挿入・削除 ・テーブルの列挿入・削除 ・テーブルのオートフィルター ・テーブルの並べ替え(ソート) ・テーブルの集計行挿入・削除・非表示 ・テーブルの右端に集計列追加 ・テーブルに新しい行列を含めない ・テーブルの使い方の基本 ・サイト内のテーブルに関するページ
第142回.テーブル全件処理とデータ最終行(ListObject,DataBodyRange)
・テーブル全件処理 ・テーブルの特定列のデータ最終行まで ・テーブルが拡張されないパターン ・サイト内のテーブルに関する他のページ




同じテーマ「VBA100本ノック」の記事

41本目:暗算練習アプリ
42本目:データベース形式に変換
43本目:CSV出力
44本目:全テーブル一覧作成
45本目:テーブルに列追加
46本目:名前定義に使える文字
47本目:Window操作
48本目:配列と数値型
49本目:条件付き書式の判定
50本目:トリボナッチ数列
51本目:シート一覧と印刷ページ数


新着記事NEW ・・・新着記事一覧を見る

列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)
シートのActiveXチェックボックスの指定方法|ツイッター出題回答 (2023-09-24)
ByRef引数の型が一致しません。|ツイッター出題回答 (2023-09-22)
シートコピー後のアクティブシートは何か|ツイッター出題回答 (2023-09-19)
Excel関数の引数を省略した場合について|ツイッター出題回答 (2023-09-14)
セル個数を返すRange.CountLargeプロパティとは|VBA技術解説(2023-09-08)
記号を繰り返してグラフ作成(10単位で折り返す)|ツイッター出題回答 (2023-08-28)
シートを削除:不定数のシート名に対応|VBAサンプル集(2023-08-24)
ランクによりボイントを付ける(同順位はポイントを分割)|ツイッター出題回答 (2023-08-22)
OneDrive使用時のThisWorkbook.Pathの扱い方|VBA技術解説(2023-07-26)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.マクロとは?VBAとは?VBAでできること|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.条件分岐(IF)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ