MW211 EXIT

devlog
ExcelVBA/列幅自動調整とオートフィルタ
2020年08月05日
列幅の自動調整は以下のような感じで行う。
┌──────────────────────────────────────┐
│With シート                                                                 │
│    .Columns.AutoFit                                                        │
│End With                                                                    │
└──────────────────────────────────────┘
ところが、あるシートで実行する度に幅が広がったり狭まったりする現象に出くわした。

┌──────────────────────────────────────┐
│With シート                                                                 │
│    .Columns.AutoFit                                                        │
│    .Rows("1:1").AutoFilter                                                 │
│End With                                                                    │
└──────────────────────────────────────┘
原因はオートフィルタだった。
オートフィルタがONの状態で列幅自動調整をすると広がり、
オートフィルタがOFFの状態で列幅自動調整をすると狭まっていたのだ。
しかも、「.AutoFilter」はトグル的なメソッドなので、これと組み合わさって
処理を実行する度に幅が広がったり狭まったりする現象を引き起こしていたのだ。

┌──────────────────────────────────────┐
│With シート                                                                 │
│    If .AutoFilterMode Then  '■処理追加                                    │
│        .Cells.AutoFilter    '■処理追加                                    │
│    End If                   '■処理追加                                    │
│    .Columns.AutoFit                                                        │
│    .Rows("1:1").AutoFilter                                                 │
│End With                                                                    │
└──────────────────────────────────────┘
ということで、いかなる場合もオートフィルタがOFFの状態で
列幅自動調整をするように処置。(これで狭い方オンリーになる)
分類:ExcelVBA