• ベストアンサー

Excel VBAで、複数のシートのセルの列幅を一度に変更する方法は??

Excel VBAで、複数のシートのセルの列幅を一度に変更する方法は?? Excel VBAに関する質問です。 ある統計表(のようなもの)から特定の数字を抜き出し、同じファイル内の別シートに反映させる作業を一部効率化できないかと試みています。 For~Nextの構文を使って、複数のシートを作成するところまではできたのですが、その後の列幅の調整がよくわからず困っています。 列の幅については下記のような感じかなと思っているのですが、 実行しても一つのシートにしか、結果がでず(全てのシートが 選択はされるのですが)他のシートの列幅が変わりません。。。 Sub 複数シートの選択()   WorkSheets.select Columns("B:C").ColumnWidth = 15 Columns("E:H").ColumnWidth = 20 End Sub この処理の前にシートの作成をするようにしているので、 全てのシートではなく、そのときに作成したシートのみにかかる 方法でも問題ないのですが、その方法だとうまくいくのでしょうか? まだかなり勉強中の段階で、初歩的なことでしたら大変申しわけないのですが、上記で修正すべき点や参考になるサイトを教えていただければと思います。 For~Nextでやるのかも?と思うのですが、この構文が理解しきれておらず、自分でまったく思いつきません・・・ 基本にも満たない内容で申し訳ありません。 情けない話なのですが、ご教授頂けると幸いです。

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

  • ベストアンサー
  • nknk80
  • ベストアンサー率65% (17/26)
回答No.1

これではどうでしょうか。 Sub 複数シートの選択() For i = 1 To Worksheets.Count With Worksheets(i) .Select Columns("B:C").ColumnWidth = 15 Columns("E:H").ColumnWidth = 20 End With Next End Sub

mikan79
質問者

お礼

nknk80様 回答ありがとうございました。おかげさまでおっしゃるとおりにしてみたところうまく出来ました。処理の回数を現在のシートの数、としてやれば良いんですね。勉強になりました。 遅い時間にも関わらず、すばやいご回答くださったこと感謝します。 ありがとうございました!!!

その他の回答 (1)

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.2

実験の結果、確かに Sheets.SelectまたはWorksheets.Selectの後に Columns("B:C").ColumnsWidth=10としても全てのシートには適用されませんでしたが、 Columns("B:C").Select Selection.ColumnsWidht=10 とすると全てのシートで列幅が適用されました。 前者では、複数シートが選択されていてもColumnsWidthはアクティブシートにのみ適用になりますが 後者は選択された範囲に対して処理するため全体へ適用されるのだと思います。

mikan79
質問者

お礼

Masa2072様、ご回答ありがとうございました。検証までしていただいて、ご丁寧な対応ありがとうございます。 おっしゃるとおりにしてみたところ、確かに全てのシートにちゃんと列幅調整がかかりました。最初にシートを選択してやれば出来るのかなと思い、Masa2072様のいうような方法は思いつかなかったです。 出来るだけ自分でもこの件については調べたつもりだったのですが、 お手上げ状態だったので回答頂き助かりました。 ありがとうございました!!

関連するQ&A

専門家に質問してみよう