Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » ピボットテーブル更新時に列幅を自動調整しないようにするExcelマクロ

ピボットテーブル更新時に列幅を自動調整しないようにするExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「vba ピボット 更新時に列幅を」
「excel マクロ pivot 更新時に列幅を自動調整させない」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

[ピボットテーブルオプション]ダイアログに、[更新時に列幅を自動調整する]チェックボックスがあります。

ピボットテーブルの更新時に列幅を自動調整しないようにするExcelマクロ

[スポンサードリンク]

この[更新時に列幅を自動調整する]チェックボックスを、VBA(Visual Basic for Applications)から操作するにはどのようなコードを書けばいいのかを探している方による検索でしょうか。

アクティブブックの全ピボットテーブルを更新時に列幅を自動調整しないようにするサンプルマクロ

以下のようなマクロで、アクティブなブックの、すべてのピボットテーブルの設定を変更して、更新時に列幅を自動調整しないようにできます。

Sub 更新時に列幅を自動調整しないように()

 Dim sh As Worksheet
 Dim pvt As PivotTable

 For Each sh In Worksheets
  For Each pvt In sh.PivotTables
   pvt.HasAutoFormat = False
  Next pvt
 Next sh

End Sub

サンプルマクロの解説

[ピボットテーブルオプション]ダイアログの[更新時に列幅を自動調整する]チェックボックスをOffにする操作をマクロ記録すると、
  ActiveSheet.PivotTables("ピボットテーブル1").HasAutoFormat _
    = False
といったコードが作られます。

つまりPivotTableオブジェクトのHasAutoFormatプロパティを、

ピボットテーブルの更新時に列幅を自動調整しないようにするExcelマクロ

Falseにすれば、[更新時に列幅を自動調整する]チェックボックスが、Offになるということです。

上記のマクロでは、このPivotTable.HasAutoFormatプロパティをFalseにする処理を、ループ処理の中で繰り返しています。

アクティブなブックの全ワークシートに対するFor Each~Nextループの中で、
 For Each sh In Worksheets

各シート上の全ピボットテーブルに対するFor Each~Nextループを回して、
  For Each pvt In sh.PivotTables

PivotTable.HasAutoFormatプロパティをFalseに設定しています。
   pvt.HasAutoFormat = False

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ピボットテーブル » ピボットテーブル更新時に列幅を自動調整しないようにするExcelマクロ

「ピボットテーブル」の記事一覧

検索


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

.