• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA AutoFit の制約について)

Excel VBA AutoFit の制約について

このQ&Aのポイント
  • Excel VBAにおいて、セル幅が自動調整されず表示が「###」のままになる場合があります。
  • 特定のコードを使用した場合にも、自動調整されないことがあります(一部の場合を除く)。
  • 「.EnableEvents = False」をコメントアウトすると、自動調整がされることがあります。同じブック内でも、異なるルーチンによって動作が異なる場合があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

.Calculation = xlCalculationManual が実行され、 その後、課題列の課題セルに、必要な列幅が大きくなるような値が埋まり、 再計算されないまま、 .Cells.EntireColumn.AutoFit が実行され、 その後、 .Calculation = xlCalculationAutomatic によって、再計算される。 つまり、 .Cells.EntireColumn.AutoFit が実行されるときに まだ、セルに期待値が埋まっていない可能性です。 もし、その不安があるのであれば 私なら、  With ThisWorkbook.Sheets(1)   Application.Calculate   .Cells.EntireColumn.AutoFit  End With とします。

okwazuki
質問者

お礼

重ねてのご回答ありがとうございます。 動作につきましても良く分かりました。 ありがとうございました。

その他の回答 (1)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.1

Cells.Select Cells.EntireColumn.AutoFit このような記述をした場合、 Activeなシートが対象になります。 例えば、このコードが実行されるときに 期待とは異なるシートがActiveになっていることはありませんでしょうか。 私だったら、次のコードで、明示的にシートを指定します。  With ThisWorkbook.Sheets(1)   .Cells.EntireColumn.AutoFit  End With また、このような記述のほうが、後々、 コードが読みやすいハズです。

okwazuki
質問者

お礼

早々のご回答ありがとうございました。 事前に、別ルーチンで .Calculation = xlCalculationManual 実施後  With ThisWorkbook.Sheets(1)   .Cells.EntireColumn.AutoFit  End With 事後に、別ルーチンで .Calculation = xlCalculationAutomatic があると、 セル幅が自動調整されず表示が「###」のままでした。 「.Calculation =」をコメントにすると OK でした。

okwazuki
質問者

補足

.Calculation = xlCalculationManual が影響するのでしょうか? (何ともない場合も有り分かりかねています・・・)

関連するQ&A