Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » TableStyleのサンプルを作るExcelマクロ

TableStyleのサンプルを作るExcelマクロ

対象:Excel2007, Excel2010, Excel2013

VBA(Visual Basic for Applications)で、ListObjectオブジェクト・テーブルのスタイルを指定する場合、例えば、
 「テーブル スタイル (淡色) 1」なら「TableStyleLight1」
 「テーブル スタイル (中間) 1」なら「TableStyleMedium1」
 「テーブル スタイル (濃色) 1」なら「TableStyleDark1」
といった文字列を、ListObjects.Addメソッドの引数・TableStyleNameや、ListObject.TableStyleプロパティに指定します。

[ホーム]タブ-[スタイル]グループ-[テーブルとして書式設定]ボタンから、

TableStyleのサンプルを作るExcelマクロ

表示されるスタイルの見本と、「TableStyleLight1」「TableStyleMedium1」「TableStyleDark1」といったスタイルを指定するときに利用する文字列の対応関係がわかり辛く感じたので、新規ワークシートにTableStyleのサンプルを作成するマクロを作ってみました。

[スポンサードリンク]

TableStyleのサンプルを作成するExcelマクロ

以下のマクロを実行すると、アクティブなブックの先頭にワークシートが挿入され、[ホーム]タブ-[スタイル]グループ-[テーブルとして書式設定]ボタンをクリックして表示される色見本と同じ配置でサンプルが作られます。


Sub TableStyleのサンプルを作成する()
 Dim r As Long, c As Long, i As Long
 Dim styl As String ' TableStyle.Name

 Sheets.Add Before:=Sheets(1)

 i = 1
 For r = 1 To 9
  For c = 1 To 7

   styl = ActiveWorkbook.TableStyles(i).Name

   ' 4行1列[.Resize(4, 1)]のTableStyleサンプルを
   ' B2セル[Cells(r * 5 - 3, c * 2)]から作成
   With ActiveSheet.ListObjects.Add( _
     SourceType:=xlSrcRange, _
     Source:=Cells(r * 5 - 3, c * 2).Resize(4, 1), _
     XlListObjectHasHeaders:=xlYes)
      .TableStyle = styl
      .HeaderRowRange.Value = styl
   End With

   i = i + 1
   If i > 60 Then Exit For ' 60個のTableStyleサンプルを作成したら終了

  Next c
 Next r

 With Columns("A:O")
  .ColumnWidth = 1
  .AutoFit
 End With

End Sub

TableStyleのサンプルを作成する処理の流れ

Excel 2007・2010・2013いずれも、[ホーム]タブ-[スタイル]グループ-[テーブルとして書式設定]ボタンをクリックすると、下図のように、9行×7列でテーブルのスタイルが表示されているので、

TableStyleのサンプルを作るExcelマクロ

行(Row)方向はカウンター変数rを1から9まで、列(Column)方向はカウンター変数cを1から7までという条件でFor~Nextループを回します。
 For r = 1 To 9
  For c = 1 To 7

ループの中ではまず、Workbook.TableStylesコレクションオブジェクトから、TableStyleオブジェクトを取得して、その名前を変数stylに格納しておきます。
   styl = ActiveWorkbook.TableStyles(i).Name

次に、4行1列のサンプルテーブルをListObjects.Addメソッドで作成します。
   With ActiveSheet.ListObjects.Add( _
     SourceType:=xlSrcRange, _
     Source:=Cells(r * 5 - 3, c * 2).Resize(4, 1), _
     XlListObjectHasHeaders:=xlYes)

先日ご紹介した、選択されているセル範囲をテーブルにするマクロでは、
     Source:=Selection.Cells, _
となっていましたが、今回はテーブルを作成する位置を、ループを回しながら少しずつずらしたいので、
     Source:=Cells(r * 5 - 3, c * 2).Resize(4, 1), _
と指定しています。

テーブル作成後に、作成したテーブルのスタイルを設定して、
      .TableStyle = styl
テーブルのフィールド見出しにスタイル名を入力し、
      .HeaderRowRange.Value = styl
次のテーブルスタイルを取得するための変数をインクリメントしておきます。
   End With
   i = i + 1

Excel 2007・2010・2013では、テーブルのスタイルは60個存在しているので、60個のサンプルを作成し終わったら、For~Nextループを抜けるようにしておきます。
   If i > 60 Then Exit For

For~Nextループを抜けた後に、作成したサンプルの列幅を調整しています。
 With Columns("A:O")
  .ColumnWidth = 1
  .AutoFit

最終更新日時:2018-12-23 15:47

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » TableStyleのサンプルを作るExcelマクロ

TrackBack:0

TrackBack URL

Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » TableStyleのサンプルを作るExcelマクロ

「ListObjectオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.