プロが教える店舗&オフィスのセキュリティ対策術

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

Excel VBAに関する質問です。
ある統計表(のようなもの)から特定の数字を抜き出し、同じファイル内の別シートに反映させる作業を一部効率化できないかと試みています。

For~Nextの構文を使って、複数のシートを作成するところまではできたのですが、その後の列幅の調整がよくわからず困っています。

列の幅については下記のような感じかなと思っているのですが、
実行しても一つのシートにしか、結果がでず(全てのシートが
選択はされるのですが)他のシートの列幅が変わりません。。。

Sub 複数シートの選択()
  WorkSheets.select
Columns("B:C").ColumnWidth = 15
Columns("E:H").ColumnWidth = 20
End Sub

この処理の前にシートの作成をするようにしているので、
全てのシートではなく、そのときに作成したシートのみにかかる
方法でも問題ないのですが、その方法だとうまくいくのでしょうか?

まだかなり勉強中の段階で、初歩的なことでしたら大変申しわけないのですが、上記で修正すべき点や参考になるサイトを教えていただければと思います。

For~Nextでやるのかも?と思うのですが、この構文が理解しきれておらず、自分でまったく思いつきません・・・

基本にも満たない内容で申し訳ありません。
情けない話なのですが、ご教授頂けると幸いです。

A 回答 (2件)

これではどうでしょうか。



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
    • good
    • 2
この回答へのお礼

nknk80様

回答ありがとうございました。おかげさまでおっしゃるとおりにしてみたところうまく出来ました。処理の回数を現在のシートの数、としてやれば良いんですね。勉強になりました。

遅い時間にも関わらず、すばやいご回答くださったこと感謝します。
ありがとうございました!!!

お礼日時:2008/07/02 11:57

実験の結果、確かに


Sheets.SelectまたはWorksheets.Selectの後に
Columns("B:C").ColumnsWidth=10としても全てのシートには適用されませんでしたが、
Columns("B:C").Select
Selection.ColumnsWidht=10
とすると全てのシートで列幅が適用されました。

前者では、複数シートが選択されていてもColumnsWidthはアクティブシートにのみ適用になりますが
後者は選択された範囲に対して処理するため全体へ適用されるのだと思います。
    • good
    • 1
この回答へのお礼

Masa2072様、ご回答ありがとうございました。検証までしていただいて、ご丁寧な対応ありがとうございます。

おっしゃるとおりにしてみたところ、確かに全てのシートにちゃんと列幅調整がかかりました。最初にシートを選択してやれば出来るのかなと思い、Masa2072様のいうような方法は思いつかなかったです。

出来るだけ自分でもこの件については調べたつもりだったのですが、
お手上げ状態だったので回答頂き助かりました。
ありがとうございました!!

お礼日時:2008/07/02 12:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A