VBA再入門
全てのシートに同じ事をする(For~Worksheets.Count)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
公開日:2015-10-17 最終更新日:2021-01-27

第20回.全てのシートに同じ事をする(For~Worksheets.Count)


エクセルの作業で最も面倒かつ時間のかかる作業は、同じ作業の繰り返しでしょう。
1回だけなら数秒でも、それを何十回と繰り返すとなると・・・
多くのシートがあり、同じ作業を全シートに行うとなると・・・
こういう時こそ、まさにマクロVBAの出番です。


シートの指定方法

Worksheets("シート名")
Worksheets(インデックス)
ActiveSheet

この3通りを紹介しました。

全シートに対する処理では、
Worksheets(インデックス)

これを使います。

インデックスは、
先頭シートが、1
最終シートが、Worksheets.Count
になります。
そこで、Forを使って1~Worksheets.Countまで処理するようにします。

全シートの「印刷の向き」を「横」に設定します。

Excelマクロ VBAコード

Orientationについて
Orientationが印刷の向きを指定するプロパティです。
xlLandscape:横
xlPortrait:縦

ページ設定は、非常に多くのプロパティがあります。
マクロの記録を有効に使って調べて下さい。
用紙サイズの指定を、マクロの記録で調べて実際にマクロVBAを書いてみましょう。

必ず全てのシートに同じ処理をするとは限りません。
特定のシート、例えば特定の文字を含んでいるシートにだけ処理をしたい場合もあります。

シート名に"横"と入っているシートだけ「印刷の向き」を「横」に設定します

Excelマクロ VBAコード

InStr関数について
InStrは、第2引数の文字が第1引数の文字の中で何番目に登場するかを返すVBA関数です。
第2引数の文字が第1引数の文字の中に無い場合は0を返します。
>0つまり1以上が返された場合は、文字列が含まれているという事です。
InStr関数はマクロVBAでは頻繁に使います。
実際に書いて、動作(戻り値)を確認し良く理解してください。

シート名に"削除"と入っていたらシートを削除する

シートに対する普通の処理の繰り返しの場合は上記で良いのですが、
シートの挿入・削除を繰り返し行う場合は一工夫必要です。

For i = 1 To Worksheets.Count
このForは、最初にこのForを実行した時点のシート数です。
つまり、繰り返しに入る時点のシート数なので、
繰り返し処理の中でシート数が変わってしまうと正しく動きません。

例えば、
最初にシート数が3だったとすると、
For i = 1 To Worksheets.Count
これは、
For i = 1 To 3
という事になります。
ループの中でシートを削除してしまうと、i=3になった時に3番目のシートは無くなっているのでエラーになります。

これに対処するには、
シートを前からではなく、後ろから処理するようにします。

Excelマクロ VBAコード

ここは、実際に、
For i = 1 To Worksheets.Count

For i = Worksheets.Count To 1 Step -1
それぞれで、変数iの動きと、その時点でのシート数を確認しつつ、ステップイン実行してみましょう。

For Eachについて

書籍やWEBで、全てのシートに対する処理を探すと、For Eachで書かれているものを見かけるはずです。
For Eachは、全て通常のFor…Nextで書き換えることができます。
したがって、これを覚えるのは後からで構いません。
今は、そういうものがあるという事だけ知っていれば十分です。

興味があり、かつ、余力があれば勉強してみてください。
使えれば、とても便利なものであることは間違いありません。
この下に解説ページへのリンクを掲載しておきます。

ExcelマクロVBA入門の対応ページ

第16回.繰り返し処理(For Next)
・For Next ステートメント ・For Next 例文 ・For Next をステップ イン実行で目で見て確認しましょう。 ・1行置きに処理する場合 ・Exit For ・For~Nextのネスト(入れ子) ・最後に一言

第37回.ブック・シートの指定
・マクロVBAでのブック・シート指定の具体例 ・マクロVBAでのブック・シート指定の必要性 ・VBAでの色々なシート指定方法

第58回.コレクションとは(Collection)
・コレクションの中から単一オブジェクトを指定する場合 ・セルであるRangeオブジェクトのコレクションは? ・コレクションの要素数 ・Collectionオブジェクト

第59回.コレクション処理(For Each)
・For Each の構文 ・Exit For ・For Each の使用例 ・RangeオブジェクトのFor Each ・For Each サイト内の参考ページ



同じテーマ「マクロVBA再入門」の記事

第17回.セルにブック・シートを指定する(Workbooks,Worksheets,With,Set)

・ブックの書き方 ・シートの書き方 ・セルにブック・シートを指定する方法 ・直接指定 ・Withを使う ・Setを使う ・SetとWithを組み合わせて使う ・ExcelマクロVBA入門の対応ページ
第18回.シートをコピー・挿入・削除する(Worksheets,Copy,Add,Delete)
・シートのコピー ・シートの挿入 ・シートの削除 ・メソッドの戻り値 ・ExcelマクロVBA入門の対応ページ
第19回.ブックを開く・閉じる・保存する(Workbooks,Open,Close,Save,SaveAs)
・ブック(Excelファイル)のパス(場所)を特定する ・ブックを開く ・ブックを閉じる ・上書き保存 ・名前を付けて保存 ・保存形式(ファイルの種類)について ・ExcelマクロVBA入門の対応ページ
第20回.全てのシートに同じ事をする(For~Worksheets.Count)
第21回.ファイル一覧を取得する(Do~LoopとDir関数)
・Dir関数 ・Dir関数の使い方 ・ファイルの一覧を取得するマクロVBAコード ・Do~Loopステートメント ・ExcelマクロVBA入門等の対応ページ
第22回.複数ブックよりデータを集める
・第17回.セルにブック・シートを指定する ・第19回.ブックを開く・閉じる・保存する ・第21回.ファイル一覧を取得する ・複数ブックよりデータを集めるVBA
第23回.複数のプロシージャーを連続で動かす(Callステートメント)
・長い1つのプロシージャーを分割する ・プロシージャーを呼び出すCallステートメント ・ExcelマクロVBA入門等の対応ページ
第24回.マクロの呪文を追加してボタンに登録(ScreenUpdating)
・マクロの呪文「Application.ScreenUpdating」を追加 ・ボタンの追加とマクロの登録 ・ExcelマクロVBA入門等の対応ページ
第25回.月別ブックより部署別シートに担当別に集計するNo1
マクロ再入門と題しての連載もいよいよ大詰めです、これまでの総復習として、以下のような処理のマクロを書いてみましょう。■処理概要 月別のデータファイル(ExcelファイルまたはCSV)を読込み、※項目は、日付,部署,担当者,売上数,売上金額 これを、新規ブックを作り、部署別のシートに、担当者・年月ごとの集計値を出力す…
第26回.月別ブックより部署別シートに担当別に集計するNo2
マクロ再入門の課題として、月別ブックより部署別シートに担当別に集計する、これを実現する実際のマクロを順に見ていきます。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」に、サブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「データ」に、
第27回.月別ブックより部署別シートに担当別に集計するNo3
マクロ再入門の課題として、月別ブックより部署別シートに担当別に集計する、最も頭を悩ます、部署別のデータに集計します、少々複雑な処理になります。全体の処理手順は以下になります。■処理手順 ・ファイル一覧 シート「ファイル一覧」に、サブフォルダ「月別データ」内の全Excelファイルの一覧を取得 ・データ収集 シート「デ…


新着記事NEW ・・・新着記事一覧を見る

エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.ひらがな⇔カタカナの変換|エクセル基本操作




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。


このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ