- ベストアンサー
Excel VBA AutoFit の制約について
- Excel VBAにおいて、セル幅が自動調整されず表示が「###」のままになる場合があります。
- 特定のコードを使用した場合にも、自動調整されないことがあります(一部の場合を除く)。
- 「.EnableEvents = False」をコメントアウトすると、自動調整がされることがあります。同じブック内でも、異なるルーチンによって動作が異なる場合があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
.Calculation = xlCalculationManual が実行され、 その後、課題列の課題セルに、必要な列幅が大きくなるような値が埋まり、 再計算されないまま、 .Cells.EntireColumn.AutoFit が実行され、 その後、 .Calculation = xlCalculationAutomatic によって、再計算される。 つまり、 .Cells.EntireColumn.AutoFit が実行されるときに まだ、セルに期待値が埋まっていない可能性です。 もし、その不安があるのであれば 私なら、 With ThisWorkbook.Sheets(1) Application.Calculate .Cells.EntireColumn.AutoFit End With とします。
その他の回答 (1)
- HohoPapa
- ベストアンサー率65% (455/693)
Cells.Select Cells.EntireColumn.AutoFit このような記述をした場合、 Activeなシートが対象になります。 例えば、このコードが実行されるときに 期待とは異なるシートがActiveになっていることはありませんでしょうか。 私だったら、次のコードで、明示的にシートを指定します。 With ThisWorkbook.Sheets(1) .Cells.EntireColumn.AutoFit End With また、このような記述のほうが、後々、 コードが読みやすいハズです。
お礼
早々のご回答ありがとうございました。 事前に、別ルーチンで .Calculation = xlCalculationManual 実施後 With ThisWorkbook.Sheets(1) .Cells.EntireColumn.AutoFit End With 事後に、別ルーチンで .Calculation = xlCalculationAutomatic があると、 セル幅が自動調整されず表示が「###」のままでした。 「.Calculation =」をコメントにすると OK でした。
補足
.Calculation = xlCalculationManual が影響するのでしょうか? (何ともない場合も有り分かりかねています・・・)
お礼
重ねてのご回答ありがとうございます。 動作につきましても良く分かりました。 ありがとうございました。