CELLNETS Excel開発の専門会社

【VBA入門】危険!For Each~Nextステートメントによる全シート操作に潜むリスクを解説

Excelブック内の全シートに対する処理。「無条件」処理がもたらすリスクを回避するには。


Excelブック内の全シートに対する処理。「無条件データ処理」がもたらすリスクを回避するには。

みなさん、こんにちは。セルネッツ竹本です。

今回は、「For Each~Nextによる繰り返し処理」をテーマに、解説をしたいと思います。

全シート処理の見直しに

全シート一括のマクロ、誤更新を防げます

  • 隠しシートまで書き換えて数字が狂った
  • どのシートでエラーが出たか分からない
  • シートが増えるたびにマクロの結果が変わる

そのお悩み、シート名のルールに基づく安全な処理設計で解決できます。Excel専門のシステム開発会社『セルネッツ』なら、処理対象のシートを名前で判定するマクロに改修できます。シート枚数の確認やエラー発生シートの記録も組み込めます。

\Excel専門特化 × 低価格 × スピード対応/

全シート処理の改修を相談する

全国対応・お見積もり無料

◆実務でも頻度の高い「全シート処理」For~Nextステートメントは何故キケン?

まず、ブック内のシートには、可視化されないシート(表示できないシート)が潜んでいる可能性があります。


【1つ目】
これはVBAプログラムからしか表示することさえできない「xlSheetVeryHidden」を適用しているケースがあるためです。

↓通常、VBAからのシート表示 or 非表示は以下で記述します。
この方法で非表示したシートは、シートタブを右クリックで隠しシートも表示できます。

Worksheets(S_Idx).Visible = True ‘表示

Worksheets(S_Idx).Visible = False ‘非表示


↓但し、以下の方法で、シートを非表示した場合は、VBAから解除しないと見えません。

Worksheets(S_Idx).Visible = xlSheetVeryHidden ‘非表示
そのため、ユーザ自身がそれを認識できていないケースも多くあります。

↓【VBA入門】存在するシートなのに表示させない方法
https://www.cellnets.co.jp/dev_column/9271


【2つ目】
シート総数をとわず、とにかく「全て無条件で処理」あるだけ全部!
シート名もシート番号もノーチェックです。

For Each Obj_Ws In Worksheets

    Obj_Ws.Range("A1").Value = "ABC"

Next Obj_Ws

これにより、想定し得ぬ予期せぬシートが存在していた場合に、意図しない結果を招くリスクがあるためです。

これを回避するためには、最低限の妥当性チェックを反映するだけでも、そのリスクを低減できます。

‘※※※※※※※※※※※※※※※※※※※※※※※※※※※
Sub M_全シートのデータを更新()
‘※※※※※※※※※※※※※※※※※※※※※※※※※※※

Dim S_CntSt総数 As Long
Dim S_Idx As Long
Dim S_St名 As String

    S_CntSt総数 = Worksheets.Count

    For S_Idx = 1 To S_CntSt総数
        
        S_St名 = Worksheets(S_Idx).Name
    
        If InStr(S_St名, "受注") > 0 Then
            'ここで当該処理
            
        Else
        End If
        
    Next S_Idx

End Sub

つまり、処理対象とするシート名にはルールがあるはず、という考え方です。

せめて、シート枚数を把握したうえで、[何枚目]の[何と言う名前のシート]で実行時エラーが発生しているかが把握できる設計だと、不具合の際の対応は、効率よく行えるでしょう。是非、習慣として身につけておきたいものです。

今回のテーマは、「For Each~Nextによる繰り返し処理」について、解説を行いました。

本記事が、Excel実務の効率化において、ご参考お役立てになれば幸いです。


Excel業務改善事例ショート動画

文章だけでは伝わりにくい改善事例を、ショート動画でご覧いただけます。

◆よくある質問 ◆Excel業務改善の実例 ◆VBA・マクロ活用事例

相見積もり歓迎

既存マクロの安全対策だけの改修も承ります

  • 前任者が作ったマクロの改修・引き継ぎに対応
  • 作業単価は基本料金50,000円+時間単価
  • エラー1件ならエラー解決サービス30,000円

作り直しではなく、今のマクロに妥当性チェックを足す改修からご相談いただけます。料金は基本料金50,000円+時間単価が目安です(税別)。目の前のエラーだけならExcelエラー解決サービス(1件30,000円・税別)も選べます。相見積もりも歓迎です。

\Excel専門特化 × 低価格 × スピード対応/

無料見積もり・お問い合わせはこちら

全国対応・お見積もり無料

Excel業務改善事例ショート動画よくある質問など公開中

関連記事

Excelシステム開発

Excelを複数人で共同編集できるExcel for the webとは?Excelオンラインの共有手順と業務改善事例

更新日:2026年10月9日

Excelシステム開発

システム開発の依頼ガイド|費用相場・流れ・会社の選び方と「作りすぎない」判断軸

更新日:2026年9月24日

Excelシステム開発

予約システムの開発依頼にかかる費用相場|小規模店舗は100万円以下で作れる

更新日:2026年9月24日

Excelシステム開発

CRMシステム開発の外注費用は?依頼先の選び方と100万円以下に抑える考え方

更新日:2026年9月24日

Excelシステム開発

勤怠管理システム開発の外注費用相場|100万円以下で作る方法とプラン別料金【2026年版】

更新日:2026年9月24日

Excelシステム開発

SFAシステム開発の依頼相場は?高額SaaSに払い続ける前に知るべき「安く作る」現実解

更新日:2026年9月24日

Excelシステム開発

業務システム開発の依頼はいくら?費用相場と「100万円以下」で頼む方法

更新日:2026年9月24日

Excelシステム開発

受発注システム開発の費用相場は?外注料金の内訳と安く抑える方法を解説

更新日:2026年9月24日

Excelシステム開発

販売管理はエクセルで十分?売上管理表・発注管理表の作り方と「限界」の乗り越え方

更新日:2026年10月9日

newsite