vba forの基礎から応用まで徹底解説!Excel処理・ループ・エラー対策も網羅

25 min 2 views

「VBAのfor文、最初は取っつきにくい…そんな印象はありませんか?実は、Excel作業の自動化にfor文を適切に使うことで「手作業にかかる時間が1/10以下になった」という読者の声も多く届いています。

業務現場では1回の繰り返しミスが数百件分の手戻りにつながることも珍しくありません。繰り返しミスによるデータ誤記や修正作業だけで年100時間以上失っている事例もあります。「形だけ覚えても現場で動かなかった」「二重ループや配列の扱いで毎回つまずく」といった悩み、あなたも心当たりがありませんか?

本記事では、VBA初心者がつまずきやすいfor文の基本構文から、現場ですぐに役立つ応用テクニックまでをわかりやすく徹底解説。公式ドキュメントや実際の開発現場で蓄積されたノウハウをベースに、毎日1分でも早く帰りたい方、手戻りを根本から減らしたい方に最適な内容です。

今すぐ読み進めて、「また今月も手作業で残業…」という悩みから一歩抜け出しませんか?

目次

VBA for文の基本構文と役割を理解するために – 基礎から実装レベルまで徹底解説

VBA for文の概要とは繰り返し処理の重要性 – キーワード: 基本, 繰り返し, VBA for

VBAのfor文は処理を繰り返す制御構文の中で最も基本的なものです。業務の自動化やデータ処理の効率化に欠かせないため、Excelでの作業を大きくスピードアップできます。for文には主に「for next」「for each」の2種類があり、用途や配列の操作、コレクション内のループ処理などで活用されます。繰り返し処理を活用することでExcelの集計やレポート作成、複数シートの値集計といったタスクも容易になり、マクロの生産性が飛躍的に向上します。

VBA for文の基本構文(For ~ To ~ Step~、Nextまでの流れ)

VBA for文の基本構文はシンプルで分かりやすく、数値を1から順に変化させながら処理を繰り返します。

構文要素 説明
For 変数 = 開始値 To 終了値 [Step 増分値] 繰り返し開始。増分値は省略可
Next [変数] 繰り返し終了、次のループへ

例:
For i = 1 To 5
‘ここに繰り返す処理を記述
Next i

この流れを利用することで、数値処理・範囲選択や行単位のループなど幅広く応用可能です。Stepでプラス・マイナスの増減制御もでき、For i = 5 To 1 Step -1 のように逆順処理もスマートに実現します。

繰り返し処理のメリットとはExcel作業効率化への貢献

繰り返し処理を取り入れることで、膨大なデータを自動で操作でき、手作業によるヒューマンエラーを大幅に削減できます。例えば数百行・数千行のデータ集計や、一定条件を満たすセルだけを書式変更する作業も、一度ロジックを組めば瞬時に繰り返し実行可能です。

主なメリットは次の通りです。

  • 大量データ処理を短時間で完了できる

  • 人的ミスの防止と標準化が容易

  • 同じ手順を何度も再利用できる

このようにfor文はExcel業務の自動化に絶大な効果を発揮します。

実践的なFor文スタートアップには環境設定から初コードまで

ExcelのVBAエディタを起動しモジュール作成

VBAのコーディングはExcelの開発タブからVBAエディタを起動することから始まります。VBAエディタ上で標準モジュールを追加すれば、さまざまなマクロを記述可能です。

  1. Excelの「開発」タブをクリック
  2. 「Visual Basic」を選択してエディタを開く
  3. 挿入 > モジュールで新規作成

この操作により自作のfor文や自動化マクロを効率よく作成できる環境が整います。

まずは「1から5まで数値表示」など簡単なコード例の解説

for文の動作を体感するには、まずシンプルな実行例を試すのが効果的です。以下は「1から5までの数値をメッセージ表示する」基本コードです。

vba
Dim i As Integer
For i = 1 To 5
MsgBox i
Next i

この例ではfor文でiの値が1から5まで1ずつ増加し、各ループごとにその値がメッセージとして表示されます。この基本構造を応用することで、セル内容のアクセスや条件判定、ファイル名の取得や配列の要素処理などさまざまな自動化が可能となります。

さらにfor eachを使えば、セル範囲や配列、コレクションの各要素をより直感的に処理できます。業務の場面に応じてfor nextやfor eachを使い分けることで、VBAの力を最大限に生かせます。

VBA forを徹底活用するための基本構文と役割の徹底解説 – 決まった回数繰り返す処理の基本をマスター

VBA forの概要と役割 – excel vba forの基礎理解、基本構文とカウンタ変数の意味

VBAのfor文は、決められた回数または条件で処理を繰り返す際に不可欠な制御構文です。例えばデータの一括処理や複数セルへの操作、フォルダ内ファイル取得など幅広い場面で利用されています。for文ではカウンタ変数を使って繰り返し回数や処理対象を自動で制御できるため、手作業と比較して大幅な効率化が可能です。
基本的なfor next文の構文は以下の通りです。

要素 説明
Forカウンタ 繰り返しの開始値・終了値・増減指定
Next 次のループへ進む、またはループから抜ける役割
Step 繰り返し毎のカウント増減値
Exit For 条件付きでループから途中抜けしたい場合に使用

Excel VBAでのfor文活用は、反復作業や大量データの自動処理の基盤となっています。

for next文の書き方とstep指定詳細 – for next step 1やstep-1による増減制御の実践例

for next文の基本的な書き方は「For i = 1 To 10」の形で、カウンタ変数iを1から10まで1ずつ増やしながら処理を繰り返します。増分を指定するにはstepキーワードを使い、「For i = 10 To 1 Step -1」とすれば逆順カウントも可能です。
ループの応用例として、複数条件を組み合わせたり、配列の要素を処理したり、途中でループから抜けるためにExit Forを活用できます。

  1. 1から10まで1ずつ増やす
  2. 10から1まで1ずつ減らす(Step -1)
  3. 2ずつ増やす(Step 2)

また、ループの途中で次のループにスキップしたい場合はContinue相当のロジックにIf文を活用します。
大量データの場合は最終行まで自動で繰り返す方法やカウンタ変数の使いまわしにも注意しましょう。

for each文との違いと使い分け – vba for each 配列、コレクション操作に強みをもつfor eachの解説

for next文は数値指定や配列のインデックス処理に強い一方、for each文はコレクションやRangeなどのオブジェクト集合を簡単に扱える点が特徴です。for eachを使うと「全セルの値確認」「フォルダ内ファイル名取得」などの作業が構文的にもシンプルになり、追加・削除に伴うエラーにも強くなります。

比較項目 for next for each
数値カウント 得意 ×
配列(1次元) 得意
配列(2次元) 条件により〇
コレクション 得意
レンジ(Range) 得意

配列処理時やExcelのrow単位処理はfor next、セル範囲やコレクション操作はfor eachと用途で使い分けるのがコツです。

VBA環境の準備方法とfor文の始め方 – Excel上でのVBAエディタ起動、モジュール作成手順を具体例で説明

ExcelでVBAを始めるには、まず「開発」タブからVBE(Visual Basic Editor)を起動します。以下の手順で準備が可能です。

  1. Excelのリボンから「開発」タブをクリック
  2. 「Visual Basic」ボタンを選択しエディタを起動
  3. メニューから「挿入」→「標準モジュール」で新規作成
  4. コードウィンドウにfor文の動作例を書き入れる

準備が整ったら、実際に「For i = 1 To 5」などの記述を行うことで、自分のペースで動作確認や応用まで学んでいけます。セルの値を書き換えたりファイル操作も可能なので、様々な業務効率化に直結します。

For Nextの応用テクニックにはループ制御の実務レベルでの多様な使い方

For Nextで1ずつ増減させる・複数ステップ段階の応用 – キーワード: For Step, インクリメント, デクリメント

For Nextステートメントは、繰り返し処理を自在に制御するために欠かせません。処理回数を柔軟に変更するにはStepを活用し、増分や減分を自由に設定できます。代表的な使い方として、Step 1なら変数を1ずつインクリメント、Step -1ならデクリメントが可能です。この仕組みを用いれば、配列やデータの前方・後方ループがシンプルに実現できます。

パターン 用途
インクリメント For i = 1 To 10 Step 1 1から10まで1ずつ繰り返し
デクリメント For i = 10 To 1 Step -1 10から1まで1ずつ減らす
ステップ数変更 For i = 1 To 10 Step 2 2ずつ増加し1つ飛ばしでループ

実務での応用例

  • 配列の要素ごと処理

  • 行や列を逆順で操作

  • 偶数・奇数のみ抽出

  • 複数行ごとの集計やコピー

複数のカウンタ変数を使った二重ループと入れ子処理

二重ループは表形式データや配列操作に不可欠です。カウンタ変数を2つ用いることで、行列や2次元配列の全要素を自在に処理可能です。例えば、iとjを使いRowsとColumnsをそれぞれカウントし、セルの一括編集や条件付きマッチングにも対応できます。応用例として、VBAでフォルダ内ファイル取得→行方向・列方向それぞれの条件チェックといった業務で重宝します。

二重ループの書き方例

  1. For i = 1 To 最終行
  2. For j = 1 To 最終列
  3. セルの値を判定・変更
  4. Next j
  5. Next i

主な活用場面

  • 2次元配列に格納したデータの繰り返し

  • シート全体の条件付書式や集計

  • フォルダ内全ファイル名の一覧取得

ループ制御を自在にするにはExit Forと条件分岐の活用術

Forループ中に条件で抜けるExit Forの使い方

大規模なループ処理では、必要に応じて途中でループを抜ける制御が重要です。多くの場合、If文で条件判定し該当時にExit Forを記述することで、ループ継続の無駄を省いて効率化できます。よくある利用シーンは「特定値が見つかれば以降処理不要」「最初にエラー発生時は即時停止」などです。

主なコード例

  • 指定セル値が見つかった時にループ終了

  • ファイル名にキーワードが含まれる時のみ残りのループを省略

メリット

  • 不要な処理の回避で高速化

  • 意図しない重複作業の防止

ネストしたループ内での複雑条件対応例

入れ子構造のループ内でExit Forを使う場合、深い階層で条件分岐を柔軟に設計することがポイントです。たとえば、外側ループと内側ループで異なる条件を割り当てて、内側だけで早期終了したり、外側全体を一発で抜ける場合には入れ子全体のロジックを工夫します。

複雑な条件処理例

  • 内側ループで一致データにヒットしたらExit Forで終了

  • 外側ループ側でフラグを設定して次のループに移行

  • 複数条件を組み合わせfor~next文がうまくいかない時はif文+exitの組み合わせが有効

実践的な例

  • 二重ループで目的の組合せが見つかった時点で全ループ停止

  • for文 continue風の処理をif~thenで制御し、読みやすいスクリプトを実現

細かなルールやコード例の把握で、実務のVBAループ制御力は格段に向上します。

高度なVBA forテクニックと繰り返し処理の多彩な応用 – ステップ指定や複数条件処理、配列・セル操作の実用例

複数条件でのforループ制御 – vba for next 複数条件や論理演算子の使用例

VBAのfor next文では、カウンタ変数とstepを自在に指定しつつ、複数条件の制御も重要です。if文と論理演算子(And、Or、Not)を併用することで、細かなループ制御が実現できます。例えば複数条件で特定の処理を飛ばす場合、forループ内にif文を組み合わせて条件分岐を行います。また、1つ飛ばしや2つずつ増やす場合はstepオプションを活用します。下記にポイントを整理します。

  • カウンタ変数にstepを指定し細かくインクリメント/デクリメント可

  • if文と論理演算子で複数条件分岐

  • exit forで強制終了、continue相当はgotoで代用

用途 実現方法
2つ飛ばし for i = 1 to 10 step 2
複数条件で処理 for内でif (条件1 and 条件2) then
途中スキップ if (条件) then goto NextLoop
途中終了 exit for

繰り返し処理の柔軟な設計は、エラー防止や意図通りの処理実行に不可欠です。

ネストしたforループの使い方と注意点 – 二重ループ・多重ループの効果的な設計とパフォーマンス対策

二重ループ(ネストループ)は、配列やセル範囲の多次元データ処理に不可欠です。ただしパフォーマンスや可読性維持のため、注意深い設計が求められます。ループカウンタ変数の使い回しは厳禁であり、各ループごとに明確な変数名を使うことでバグを防止できます。

  • 配列やセル範囲で内外カウンタを分けて管理

  • exit forやexit subでループの早期終了が可能

  • ループ内の不要な処理を最小限に抑え高速化を意識

ループ数 主な用途 注意点
2重 二次元配列、セル範囲処理 カウンタ変数の使いまわし禁止
3重以上 複雑なセルやデータ構造処理 処理負荷・速度に注意

コードが冗長になりやすいため、処理ごとの役割分担や関数化も有効です。

配列や範囲をループさせるfor each活用 – vba for each 配列 二次元・セル範囲の一括処理方法

for each構文は配列やコレクションの要素を1つずつ順番に処理し、多次元配列やセル範囲の一括操作で高い効率性を誇ります。特に要素数や範囲が動的な場合、for each文なら配列の要素追加や削除にも柔軟に対応可能です。二次元配列の場合は、一度一括でセル範囲を配列に格納し、for eachで値を取り出します。

  • 配列やセル範囲を一括で走査できる

  • コレクションや複数セル処理に最適

  • 読み飛ばしや逆順処理はfor nextと併用推奨

for eachの活用例 ポイント
配列の全要素をループ for each 要素 in 配列
セル範囲の一括操作 for each cell in Range(“A1:A10”)
二次元配列の一括操作 rangeを配列に格納→for eachで値を処理

配列やセル範囲の自動化・効率化に最適なテクニックです。

フォルダ操作に活かすforループ – vba フォルダ作成、フォルダ内のファイル名を取得するためのfor活用例

ファイル名の一括取得やフォルダ作成時にもforループは重宝します。Dir関数やFileSystemObject(FSO)を活用し、フォルダ内のファイルやサブフォルダをfor文で順繰りに処理できます。特に複数ファイルを処理する際は、For EachとFSOの組み合わせで柔軟かつ安全に結果を取得できます。

  • DirやFSOでファイルリストを取得可能

  • 条件分岐で特定拡張子や日付に限定も可能

  • エラー対策やファイル属性チェックも忘れずに

処理内容 実現例
フォルダ作成 MkDir “パス”
ファイル名取得 For Each f in folder.Files
条件ファイル選択 If f.Name Like “*.xlsx” Then

業務効率化やファイル管理の自動化に欠かせないforループ応用です。

途中終了・スキップ制御のためのVBA forトリック – exit for・goto・条件分岐によるループ制御の最適解

exit forでループを途中終了させるテクニック – vba for 抜ける、複数条件抜けの実装例

VBAでforループを途中で抜けるにはexit forステートメントが最適です。特定条件を満たした時点で即座にループ処理を終えたい場合に活用され、多くの開発現場で重宝されています。たとえば複数条件で抜けたい時は、if文で条件を組み合わせてexit forを使います。カウンタ変数が特定値に達した、または処理対象セルの値が空白になったなど、複数の状況に柔軟に対応可能です。

条件 活用例
1.一致する値を見つけた時 ワークシート内で検索し、見つかった時点で抜ける
2.複数の条件 配列内で指定値もしくは空白セルを同時に判定し、どちらかで抜ける
3.エラー前提 任意の条件でエラーを防ぎつつループを強制終了

このようにexit forによる途中終了を積極活用することで、無駄な繰り返しを省き、可読性と実行速度を両立できます。

ループ中のスキップとcontinue不可問題の回避 – vba continue for代替のif文やgotoを使った制御例

VBAにはcontinue for構文がありませんが、条件付きで処理だけをスキップしたい場合はif文で制御できます。最初にスキップ条件を判定し、該当時は処理ブロックの内容を飛ばします。また、より明示的にスキップしたい場合はgoto文で処理の流れを分岐させる方法が定番です。

  • if文による制御例

    • カウンタ変数が偶数の場合のみ処理し、奇数時はスキップ
  • goto文の活用例

    • 特定の判定で「Next ループラベル」へジャンプ
方法 特徴
if文 可読性と保守性が高い。予期しないジャンプを防げる
goto文 短いループや特殊な分岐時に有効。多用は複雑化の原因となる

この回避策によって「vba for continue」のような意図的なスキップ制御もシンプルに実装できます。

複雑な条件分岐を含むfor文制御 – vba for next 複数条件やカウンタ変数の使い分けパターン

forループに複数条件や異なるカウンタ変数を使いたいケースは多くあります。VBAではforとifを組み合わせることで柔軟に対応できます。たとえば「配列の中で2つの条件が同時に成り立つときだけ処理を実行」「カウンタ変数iとjを用いて二重ループで表形式データを走査」など多様なパターンが考えられます。

応用パターン 解説
配列+複数条件 配列内の要素が2つの条件を同時に満たす時だけ処理
1つ飛ばし処理 step 2 やif文でカウンタを1つ飛ばし
二重ループ for i = 1 to n, for j = 1 to m, テーブル形式処理
カウンタ使い回し ループ外で変数iやjの値を使って後処理に活用

複雑な分岐や使い分けは、可読性重視のシンプルな構造を心掛けることで、予期しないバグや処理の無駄を回避できます。複合的なロジックも、カウンタ変数やif文・exit forの組み合わせで適切に対応しましょう。

For EachとFor Nextの違いとは使い分けによる配列・コレクション処理の最適解

For Eachの特徴とは配列・セル範囲操作への適用 – キーワード: For Each, 配列, コレクション

For Eachは、配列やコレクション、セル範囲を簡潔かつ誤りなく順番に処理できるという点が大きな特徴です。要素数を気にせず、対象のオブジェクトすべてに自動的にアクセスできるため、Excel VBAではセルの一括操作や配列・コレクションの値取得が効率的に行えます。特定のインデックス指定が不要な分、「処理ミスや範囲外エラーを防ぐ」「可読性が高くなる」というメリットが目立ちます。下記のテーブルで主な特徴を比較します。

項目 For Each For Next
主な対象 配列、コレクション、セル範囲 配列、数値範囲
インデックス指定 不要 必要
途中抜け(Exit) Exit For 可能 Exit For 可能
多次元配列対応 一部制限あり 完全対応
可読性 高い 標準

配列やコレクションでのFor Eachの基本的な使い方

For Eachは、配列やコレクションなど反復可能な要素をシンプルに処理できます。たとえば、配列では次のように記述します。

  1. 配列やコレクションを用意する。
  2. For Eachと変数を指定してループを開始する。
  3. 各要素に直接アクセスして処理を行う。

サンプル(配列の要素出力):

Dim arr As Variant
arr = Array(“A”, “B”, “C”)
Dim v As Variant
For Each v In arr
Debug.Print v
Next

このように、For Eachを使うことで、配列やセル範囲の反復処理が直感的かつエラーを減らして実行できます。

配列の要素数取得(UBound/LBound)を公式的利用法

配列を操作する場合、要素数を取得したい時は、UBound・LBound関数を使います。For Nextと組み合わせることで、配列の範囲を柔軟に指定できます。

  • LBound(配列):配列の最小インデックス番号

  • UBound(配列):配列の最大インデックス番号

よくある書き方は以下の通りです。

Dim arr As Variant
arr = Array(10, 20, 30, 40)
Dim i As Integer
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next

この方法は、配列サイズが可変でも安全に全要素を処理できるのが特徴です。

実務によくある場面ではFor EachとFor Nextの使い分け

配列やコレクション、セル範囲の処理は、For EachとFor Nextの使い分けが結果に大きな差を生みます。それぞれの特徴を理解し、状況に応じた選択を意識することが重要です。

配列の多次元ループや配列へのループ挿入手法

多次元配列や特定条件下の配列処理ではFor Nextが有効です。For Eachは一次元配列やコレクションが得意ですが、多次元配列の場合はFor Nextでインデックスを細かく管理します。

例:二重ループで配列全体を操作

Dim arr(1 To 3, 1 To 2) As Integer
Dim i As Integer, j As Integer
For i = 1 To 3
For j = 1 To 2
arr(i, j) = i * j
Next j
Next i

このように、多次元配列や特定の区間に対する処理にはFor Next、単純な全体処理にはFor Eachが最適化されます。

セル範囲の連続処理における使い分け事例

セル範囲の操作では、For EachがExcelシートのRangeオブジェクトに対し抜群の相性を発揮します。例として、選択範囲内の全てのセルに色を塗る場合はFor Eachが簡潔です。

例:選択セル範囲を処理

Dim cell As Range
For Each cell In Selection
cell.Interior.Color = RGB(255, 255, 0)
Next

一方、行番号や列番号で位置を制御したい場合や、飛び飛びに処理したいシーンではFor Nextが便利です。たとえば、2行おきに色を変える場合は以下のようになります。

例:2行ずつセルを処理

Dim i As Integer
For i = 1 To 10 Step 2
Rows(i).Interior.Color = RGB(200, 230, 200)
Next

両者を理解し、配列やセル範囲の処理内容によって使い分けることで、VBAでの作業がより効率的かつ確実になります。

典型的なVBA forエラーと問題解決策 – 無限ループ・構文エラー・最終行処理のトラブル対策

エラーコード「microsoft visual basic for applications 400」の対処 – 構文ミスやループ誤動作の具体例と解決策

「microsoft visual basic for applications 400」は、VBAで発生しやすいエラーの1つで、主に構文ミスや無効なループ操作が原因です。多くの場合、For…NextやFor Each…Next文でカウンタ変数の未宣言や、配列やコレクションの誤った参照によって発生します。解決策としては、コーディング時にOption Explicitを使用して変数を明示的に宣言し、コレクションや配列のサイズや要素を確認することが重要です。次のようなチェックリストが効果的です。

  • Option Explicitで変数宣言を徹底

  • ループ範囲や配列の境界値確認

  • Exit ForやExit Subの適切な使用

  • 無効なオブジェクト参照や破棄されたオブジェクトに注意

コード実行前に、これらの点を必ず確認しましょう。

無限ループ防止法と最終行までの安全な繰り返し – vba 最終行まで繰り返す range・空白考慮の注意点

VBAで最終行まで正しく繰り返すためには、無限ループの防止と空白セルの扱いを意識する必要があります。特に、Excelシートの最終行取得にはRows.CountやEnd(xlUp)を活用します。誤って空白セルまで繰り返すと、処理速度低下や意図しないループ継続が発生します。以下は安全に処理するためのポイントです。

  • 最終行取得は Cells(Rows.Count, 列).End(xlUp).Row を使用

  • 空白セルも適切に判定し、処理を終了

  • For Next構文で最終行を超えないように設計

Excel VBAでよく使うパターンの比較表をまとめます。

方法 使い方例 特徴
Cells(Rows.Count, 1).End(xlUp).Row 最終データ行までループ 安全・速度が速い
UsedRange.Rows.Count 使用範囲だけループ 空白行がない時のみ有効
Do Until IsEmpty(Cells(i, 1)) 空白で停止するループ 途中空白がある場合は不向き

これらを活用することで無限ループや意図せぬエラーを未然に防ぐことが可能です。

実務で起こるfor文のトラブル事例と回避テクニック – 変数使い回し、ループ途中で失敗するケースの解説

実務の現場では、for文使用時にカウンタ変数の使い回しや処理の分岐でミスが多く発生します。特に、For Nextのカウンタ変数を二重ループで流用すると、値の書き換えで予期せぬ動作になる原因となります。また、途中でループから抜けたい場合はExit Forを使い、continue相当の機能にはGoToで疑似的に対応します。代表的なトラブルと対策は以下の通りです。

トラブル内容 原因 解決策
カウンタ変数の上書き 二重ループで同じ変数名を使用 カウンタ変数を分けて宣言
ループ途中での強制終了不可 Exit For未使用 必要な条件でExit For使用
配列範囲外アクセス インデックスの設定ミス 配列要素数をLBound・UBoundで把握

さらに、VBA For Eachで配列やコレクションのループを行う際は、要素数や型にも注意が必要です。実務で確実な成果を出すために、これらの基本テクニックを徹底してください。

VBA for文のトラブル防止には抜け方の完全ガイド – トラブルシューティングも網羅

無限ループや処理抜けの原因とは防止方法 – キーワード: 無限ループ, ループ抜け, Exit For

VBAのfor文では無限ループや意図しないループ抜けが発生しやすく、安定した動作には正確な制御が求められます。無限ループの大半はカウンタ変数の増減ミスや終了条件の不備によって発生します。特に「For Next」構文を使った繰り返しでステップ値や上限値が誤って設定された場合、思わぬループ継続となることが多いです。また、「Exit For」を使用することで意図通りにループを終了できるため、条件分岐と組み合わせて使うと正確に制御できます。以下のテーブルで主な原因と対応策をまとめます。

原因 具体例 防止ポイント
カウンタ増減不一致 i = i + 2なのにStep 1指定 step値と増減を必ず一致させる
上限・下限設定ミス 0からマイナス方向にStep 1 上限・下限・stepの組合せ確認
条件式の記述モレ ifの組み合わせミス 抜け条件は早めに明示する

無限ループになる典型錯誤と予防策

for文構造でiの増減方向と終了値が逆になっていると、ループが永遠に続きます。例えば、「For i = 10 To 1 Step 1」と書いてしまうとiは増え続け、1未満にならず止まりません。step値は目的に合わせて明示し、「Step -1」を指定するなど必須です。
頻出パターンは次の通りです。

  • 増加の場合: For i = 1 To 10 Step 1(1ずつ増加は正しい)

  • 減少の場合: For i = 10 To 1 Step -1(1ずつ減らす場合必ずStep -1を明示)

抜けたいタイミングが発生したら、「If 条件 Then Exit For」構文を使うのがVBAの王道です。

途中スキップや条件付きでループを継続し抜けるテクニック

VBAで「条件を満たす行だけを処理」「一部だけをスキップしたい」場合は、Continue Forが標準で存在しないため、Ifで条件チェックし、該当しない場合は「GoTo」や「Exit For」を利用します。

  • 特定要素のみ処理したい場合

    If 条件 Then
    (処理)
    End If

  • 中断せずに次ループへ進みたい場合

    If 条件 Then
    GoTo NextLoop
    End If

また、処理スキップや途中終了は明示的にコメントを添えて可読性を高めることが推奨されます。

エラーが起きやすいポイントには適切な変数管理

変数管理が甘いと意図しない上書きや誤作動が発生します。VBAのforループでは配列のインデックスやループ内で使うカウンタ変数の型・使い回しが問題になりやすいです。同名変数を多用することでエラーや予期せぬ値の代入が生じるリスクが高まります。

変数の問題例 エラー内容 予防・解決策
型の不一致 Type mismatchエラー ループ前に型宣言を徹底
同名使い回し 値が意図せず上書き スコープ毎に変数名変更
初期化しない 初期値が不明 必ず事前初期化

変数の型や重複利用によるトラブル対処法

VBAでは「Dim i As Integer」や「Dim fileName As String」など型宣言を明記することが原則です。for文ごとにカウンタ変数を明示的に分けて管理し、使い回さないことでバグを抑止します。配列のインデックスや複数のループが入れ子になっている場合は、変数名を工夫し誤利用を防止しましょう。

デバッグの基本ツール活用(ステップ実行・ウォッチ)

エラー発生時にはVBAエディタのステップ実行(F8キー)やウォッチ式の活用が有効です。各行の動作を1つずつ確認することで、どこで不具合や無限ループが始まるか特定しやすくなります。また、途中で値の変化を追いたい場合はウォッチを設定してカウンタや配列の状態を常に監視可能です。

  • ステップ実行:F8キーで1行ずつ進める

  • ウォッチ式:調査対象の変数を右クリック→「ウォッチ式の追加」

手順を可視化し、トラブルポイントを早期に特定できます。

VBA forと他ループ構文の機能比較と最適活用法 – do loop・while文との違いを理解し使い分ける

VBAのforとdo loop文・while文の違い – 使いどころや性能面の比較、excel マクロ for nextとの整理

VBAで繰り返し処理に使われる主な構文は「for next」「for each」「do loop」「while wend」です。それぞれの特徴と使いどころを整理すると、次の表の通りです。

構文 主な用途 特徴 利用シーン例
for next 決まった回数の繰り返し カウンタ変数で開始・終了・増分指定が可能 シートの1行ずつ処理など
for each コレクション・配列の全要素処理 対象集合の全要素を自動処理。型や数にしばられない セル範囲・ファイル一覧のループ
do loop 条件付き繰り返し 条件が成立する間続行。exitで明示的に抜けられる フラグ変数や不定回数の処理
while wend 条件付き簡易ループ do loopより柔軟性は低いがシンプル。繰り返しの制御は限定的 簡単な条件反復

「for next」は明確な回数や配列のインデックスで使い、「for each」はコレクション全体や不定数のセルやファイル操作で活用されます。一方、条件ベースの繰り返しにはdo loop、処理がシンプルな場合はwhileが向いています。それぞれの違いを理解し、最適な処理を選択するとVBAの可読性と効率が高まります。

繰り返し処理の適材適所 – 簡単なVBA forから複雑ループまで現場で選ぶ最適構文パターン

実際のVBA現場では、業務内容に応じてループ構文を使い分けることが重要です。
for nextは逐次処理や決まったステップで進める場合に強力で、step指定や逆順(step-1)・カウンタ変数の複数管理が可能です。

for eachは以下のような現場パターンで有用です。

  • シート内の全セルをまとめて処理したい場合

  • フォルダ内の全ファイル名を一括取得したい場合

  • 配列など要素数が変動するデータの一括操作

一方、do loopは「空白になるまで繰り返したい」ときや「特定条件を満たしたら抜ける」など融通が利く場面で活躍します。
while文は簡易な条件のときだけ活用される傾向があり、複雑な制御には不向きです。

日常業務では、for nextによる1つ飛ばしループや、for eachによる多次元配列の操作、二重ループによるデータ集計など、目的に応じて正しい構文選択が不可欠です。

ループ処理の効率化と実務活用 – Excelマクロの現場での効果的活用事例を踏まえたVBA for利用法

ループ処理の効率化には、無駄な演算や不要なシートアクセスを避けることが鍵となります。
for nextでは下記のポイントを意識することで、パフォーマンスが格段に向上します。

  • 必要な範囲だけ処理する(最終行取得と組み合わせ)

  • exit forで不要な繰り返しを早期終了

  • 複数条件にはif文を併用

for eachでは配列への一括格納や、フォルダ内のファイル名取得が業務改善に直結します。

実務例:

  1. シートの最終行までループし、特定列を合計する
  2. 複数シートをfor eachで順番に処理し、レポートを作成
  3. フォルダ内のファイルをfor eachで走査し、条件付けて加工

ループ制御の小技として、continue相当はifでスキップ処理、二重ループではカウンタ変数を厳格に使い回すなど、VBA特有のコツも重要です。これらを組み合わせて、現場で発生しやすい処理にも柔軟に対応できます。

範囲指定と最終行取得を利用した実用for文の書き方でExcelデータ処理効率化

最終行までループするコードの基本とは – キーワード: 最終行, Range, For Next

VBAで大量データの処理や自動化を実現するためには、最終行まで正確にループする方法を理解することが重要です。特にExcelシートの変動するデータ範囲を扱う場合、最終行取得とFor Next文の組み合わせは不可欠なテクニックです。最終行を求めるにはRange("A1").End(xlDown).RowCells(Rows.Count, 1).End(xlUp).Rowのような記述が多用されます。こうした最終行取得とループ制御を組み合わせれば、行数の変化に柔軟に対応でき、VLOOKUPやコピー、複数条件の判定処理など日常業務の自動化に大きく貢献します。

最終行の自動取得方法とfor文組み合わせ例

Excel VBAで最終行を自動的に取得する方法は多岐に渡りますが、主に以下の手法があります。

方法 コード例 特徴
Range("A1").End(xlDown).Row For i = 1 To Range(“A1”).End(xlDown).Row … Next A列が連続データの場合に有効
Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row … Next 空白混在でも最終データ検出可
UsedRange.Rows.Count For i = 1 To ActiveSheet.UsedRange.Rows.Count … Next シート全体の使用範囲を取得

最終行を正しく取得することで、配列変数による範囲指定二重ループを駆使した複雑なデータ加工処理も簡潔に実装できます。

2行目から最終行までの空白セル判定ループ例

2行目以降のデータを対象とし、空白セルを判定するループ処理も日常業務で頻繁に要求されます。

  1. 最終行を取得する
  2. 2行目からFor Nextでループ
  3. 各行のセル値が空かどうかをIf文で判定

vb
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
If Cells(i, 1).Value = “” Then
‘空白セルの処理
End If
Next

このようなループはデータクリーニングや一括削除などにも活用でき、業務効率化に直結します。

範囲指定処理を高速化するにはFor文とFor Eachの違い活用法

For文とFor Each文は、処理対象の範囲や用途によって使い分けることで、Excel VBAの処理効率と可読性を大幅に向上させます。

  • For Nextは配列やセル範囲のインデックス指定に使い、柔軟な条件分岐や二重・三重ループ、多次元配列にも対応します。

  • For Eachはコレクション(セル範囲やArray)などの全要素をシンプルかつ確実に処理します。

  • 複雑な条件分岐が必要な場合はFor Next、範囲全体を同じ処理で一括で操作したい場合はFor Eachが最適です。

範囲指定と配列操作のベストプラクティス

配列や範囲指定による高速処理の例は、下記の通りです。

利用シーン 推奨文法 ポイント
配列の一括処理 For i=1 To UBound(arr) 配列要素ごとの処理に柔軟に対応
セル範囲の全ループ For Each c In Range 途中終了やエラー回避が容易
入れ子(二重)ループ For i=~: For j=~ 複数条件や二次元配列処理に効果的

強く意識すべきポイント

  • For Eachは動的な範囲拡張にも強く、フィルタ機能や大量データの置換・抽出で真価を発揮します。

  • 逆順ループ(Step-1)や一つ飛ばし(Step 2)もFor Nextで簡単に実装可能です。

  • 配列への一括格納やセル値コピーはExcelの処理時間短縮策として欠かせません。

For文とFor Each文の使い分けで、大量データの処理や自動化の精度を大幅に引き上げることができます。

大規模データ処理とパフォーマンス最適化のためのVBA for各種テクニック

配列一括代入とforループでの高速データ処理 – vba 配列に格納 ループの基本と応用例

大量データの処理には、配列を使って値を一括で操作し、forループで効率的に処理する方法が非常に有効です。配列に複数セルの値を格納し、for nextやfor each文で高速にループ処理を行えば、Excel上の直接操作よりも大幅な処理速度の向上が見込めます。特にfor each文は二次元配列やセル範囲のループに適し、データ量が多い場合でもメモリ効率よくデータ加工が可能です。

よく使われる処理例としてはセルの値を配列に一括で代入し、その要素数分だけループを回して数値を加算したり、条件分岐で特定のデータだけを抽出する応用が挙げられます。下記の比較テーブルに基本的な配列利用とfor文の違いをまとめます。

処理方法 適用範囲 特徴
For Next配列 一次元・多次元配列 任意のインデックス操作が得意
For Each配列 Range・コレクション 要素数可変・簡易的な記述

上記を活用すれば、「vba 配列 一括代入」や「vba for each 配列 検索」など、幅広いデータ加工に柔軟に対応できます。

動的最終行取得と全行処理の自動化 – vba 最終行取得、最終行まで足し算/コピーの効率化

Excelシートの可変データに対応するには、最終行を自動で取得し、その範囲全てに対してforループで処理を行う手法が基本となります。最終行取得にはEnd(xlUp).Rowを用いることで、空白セルを含んだデータにも正確に対応できます。

例えば、「vba 最終行まで足し算」「vba 範囲指定 最終行まで コピー」においては以下の流れが有効です。

  1. 最終行番号を取得
  2. 2行目から最終行までforループを実行
  3. 必要に応じてif文で条件処理を挟む

この自動化により、都度手動で範囲を指定し直す手間なく、毎回異なるデータ量にもミスなく柔軟に対応できます。空白セルや連続データの処理の安定性を高めるコツとして、「vba 最終行まで繰り返す range」「vba for 途中を飛ばす」などのキーワードの応用で、より効率的なデータ管理が可能となります。

1行飛ばし・2つずつ増加・逆順処理 – vba for 1つ飛ばし、step-1など特例繰り返しのテクニック

データ編集や条件付き加工においては、for next文のstep指定によるループコントロールが重要です。「vba for 1つ飛ばし」や「vba for 2ずつ増やす」は、stepプロパティに2や-1を指定することで簡単に実現できます。また、「vba for step-1」のような逆順処理を利用すれば、データ削除や上書きなど、末尾から開始する安全なループが行なえます。

頻繁に使われるstepオプションの使い方は以下の通りです。

  • 1行飛ばし:for i = 1 to n step 2

  • 2つ同時増加:for i = 1 to n step 2

  • 逆順で処理:for i = n to 1 step -1

この応用で、「vba for 抜ける」「vba for 途中を飛ばす」といったシナリオにも柔軟に対応でき、実務の自動化や省力化をさらに加速させます。明示的な抜け処理や複数条件設定は、if分岐やexit for、continue相当処理を組み合わせて安全に実装しましょう。

VBA for文とファイル操作やフォルダ処理の応用的活用法には実務的自動化事例

フォルダ作成とファイル名取得for文の使い方 – キーワード: フォルダ作成, ファイル名取得, VBA for

VBAのfor文を活用すると、面倒なフォルダの作成やフォルダ内のファイル名を一括取得する作業も自動化が可能です。特に業務で日々生じる大量のファイル管理を劇的に効率化できます。以下の表は、主要な用途別にfor文の使い方をまとめたものです。

用途 キーワード 概要
フォルダ作成 VBA for, Dir 連番や日付で複数フォルダを生成
ファイル名取得 VBA for, Dir フォルダ内ファイルの一覧取得

番号リストで手順を整理します。

  1. フォルダ作成にはDir関数で存在確認後、MkDirをfor文と組み合わせて実行します。
  2. ファイル名取得にはDir + for文でフォルダ内ファイルを配列へ格納します。

この方法により、日々のファイル管理業務が自動化でき、作業効率が大幅に向上します。

フォルダ内ファイル一覧取得の自動化コード例

VBAでフォルダ内のファイルを一括取得する自動化コードです。
forDirを組み合わせた実用例を紹介します。

Dim fileName As String
Dim i As Integer
i = 1
fileName = Dir(“C:\作業フォルダ*.*”)
Do While fileName <> “”
Cells(i, 1).Value = fileName
i = i + 1
fileName = Dir
Loop

このコードは、指定したフォルダ内のすべてのファイル名をシート上に一覧出力します。繰り返しで異なる拡張子や条件にも対応でき、業務に求められる柔軟な自動化が可能となります。

実務に役立つファイル開閉や移動操作のサンプル

for文を応用すれば、ファイルの開閉や移動といった実務的な作業も一括自動化できます。
Workbooks.OpenNameステートメントを連携させて効率よく処理できます。

  • ファイルの一括開閉

  • 指定条件ごとのファイル移動

  • ファイル名付与ルールに従った処理

具体例として、フォルダ内のExcelファイルを順に開いて、条件別に別フォルダへ移動できます。業務フローで発生する大量処理も自動化することで、ミスを防ぎ工数削減につながります。

複数条件を用いる複雑for文の設計とは運用

VBAのfor文は複数条件や特定条件の分岐にも柔軟に対応可能です。
If~ThenContinue For相当の構造を使いこなすことで、さらに実務現場で活かせる高度な処理が実現できます。

  • 2つ以上の条件による分岐処理

  • 配列・Rangeとの連携

  • 途中スキップやループ中断(Exit For

複雑なデータ判定や条件分岐も、for文の中で整理できます。
業務シナリオの多様化によりエラーや例外処理も追加しやすくなり、堅牢で柔軟な自動化プログラムが作成できます。

複数条件によるループ分岐と連結処理の具体例

複数条件を適切に運用することで、例えば特定ファイルのみ処理する・空白行を飛ばすといった細かな制御が可能です。

例:2つの条件で処理を分岐

For i = 1 To 最終行
If Cells(i, 2).Value <> “” And Cells(i, 3).Value > 100 Then
‘ 条件に合致した場合の処理
End If
Next i

主な活用シーン

  • 複数カラムをまたいだ集計

  • 配列要素ごとの条件付き処理

  • 特定文字列・数値範囲選別やスキップ

このようにfor文の複数条件判定を活かし、業務プロセスの最適化・自動化が図れます。複雑なデータ処理も正確かつ短時間で完結できるのが大きな強みです。

実務効率化に特化したVBA forの活用例紹介 – フォルダ操作から業務自動化まで幅広く実践

フォルダ作成やファイル名取得に使うVBA for – vba フォルダ作成・フォルダ内のファイル名を取得する実務例

VBAでの業務自動化においては、フォルダやファイル管理の効率化が大きなテーマとなります。VBA for文を使えば、フォルダを自動作成したり、特定フォルダ内のファイル名を一括で取得できます。以下のテーブルに、実務でよく利用される用途とサンプルコードの特徴をまとめました。

利用シーン ポイント
フォルダの一括作成 MkDirで存在チェックしながらforで繰り返す
フォルダ内のファイル一覧取得 Dir関数+forループで全ファイル名を順次取得

例えば、特定の条件で作成日ごとのフォルダをまとめて生成したり、あるいは売上データやレポートファイルなど大量のファイル名をCellへ転記する作業も簡単に自動化できます。繰り返し処理は実務の時短に直結するため、ぜひ習得したいポイントです。

繰り返しで行うセル操作・データ加工 – VBAマクロで使う複数セルのループ処理、連続セル操作サンプル

Excel業務で多用されるのが、シート上のデータ範囲に対して繰り返し処理を行うシナリオです。VBA for next文for each文を活用すれば、配列やセル範囲に対し柔軟な操作が可能です。特に「最終行まで一気に処理したい」「条件付きで値を変えたい」といったニーズには以下のアプローチが有効です。

  • カウンタ変数で1行ずつ増やす/減らす(step句)

  • 空白セルをスキップして処理

  • 二重forループによる複数列・複数行の一括加工

これにより「データの自動クリーニング」「表の集計」「条件付き書式の適用」など、実務で役立つ多様な業務が短時間で実装できます。

Excel関数呼び出しと連携したforループ制御 – worksheetfunction利用を交えたVBA forの高度活用法

VBAでは、forループとExcelの関数機能を組み合わせて高度なデータ処理が行えます。WorksheetFunctionオブジェクトを利用すると、VLOOKUPSUMAVERAGEなど一般的な表計算関数をVBAマクロ内で活用できます。たとえばfor文で各行を読み込み、特定の条件を満たす場合のみセル値を加算・書き換えたり、For Eachで配列全体に対し特定のExcel関数を適用することが可能です。

技法
For Next×関数呼び出し 各行の値をSUMで合計し、別列に結果を出力
For Each×配列参照 配列要素すべてにFormat関数をかけフォーマット変換
条件分岐・抜け処理 Ifで判定しExit Forで効率的にループ中断・For文で1つ飛ばし処理も実現

この組み合わせにより、日付のフォーマット変換や、複数シート・複数ファイルにまたがる一括データ集計といった高度なマクロ作成も容易になります。実務現場で即使えるスキルの一つです。

VBA for文のパフォーマンス向上テクニックでコード最適化

動作速度比較とは効率的なループ制御の考え方 – キーワード: 処理速度, 最適化, パフォーマンス

VBAで大量データを扱う際、for文の処理速度はプロジェクト全体に大きな影響を及ぼします。特にfor next文とfor each文の違いは理解しておきたいポイントです。for nextはインデックスによってループ制御を行う手法で、配列やセル範囲のカウントが明確な場合に有効です。一方、for eachはコレクションや配列などの各要素を順に処理したい場合に適しています。大量のExcelデータや配列処理におけるパフォーマンスの違いを把握することで、無駄のないロジック設計が可能になります。速度向上を目指すなら、アクセス範囲の絞り込みやオブジェクト参照の最小化が基本です。また、事前に対象範囲を配列に格納し、for文で処理することで大幅な最適化も期待できます。

For Next vs For Eachパフォーマンスの検証内容

for nextとfor eachのパフォーマンスは処理対象やデータ量によって差が出ます。例えばRangeオブジェクトのセル操作ではfor eachが高速、純粋な配列処理ではfor nextが優位となる事が多いです。下記のテーブルに特長をまとめます。

特徴 For Next For Each
適用範囲 配列、数値範囲 コレクション、Range、Dictionary
速度(配列への操作) 速い 普通
速度(セルやオブジェクト操作) 普通 速い
カウンタ制御 柔軟(step値や複数変数可能) 不可
可読性 普通 高い

このように、目的ごとに文法を使い分けることで全体の処理速度を最適化できます。

大規模データ処理での最適化テクニック

数千~数万行のデータをfor文で繰り返し処理する場合、for eachでワークシートから直接データ取得せず、まず配列に格納した上で操作するのが推奨されます。Excelでは下記手順が効率的です。

  1. シートデータを一括で配列へ格納
  2. 配列に対しfor nextで操作(計算・検索・集計など)
  3. 必要であれば最終的に配列からシートへ書き戻す

これにより、VBAとExcelシート間のやりとりが格段に減り処理速度が大幅向上します。また、ループ回数を最小限に抑えることで「最終行まで」「2行目から最終行」など目的に応じた範囲制御も重要です。

無駄なループを減らす条件分岐や早期終了の活用

for文内で常に全てのデータを処理するわけではなく、必要条件でのみ作業することで不要な処理負荷を減らすことができます。条件分岐を適切に挟む、またはexit forで早期にループを抜ける工夫がVBAパフォーマンス向上のポイントです。たとえば何らかの値を検索する場合は、目的の値が見つかった時点でexit forし残りループを省略すると良いでしょう。また二重ループの場合も外側・内側で上記テクニックを使い分けることで効率化が図れます。

複雑条件でもスムーズに動くコード設計思想

多様な条件が絡むfor文では、複数if文やselect caseを組み合わせて効率よく分岐処理を実装することが肝要です。例として、空白セルを飛ばしてループしたい場合や、複数条件で特定の処理のみ抽出したい場合は条件式をなるべくシンプルに書き、ネストを深くしすぎない工夫が求められます。処理の途中で「continue」はありませんが「if ~ then goto」や、「exit for」、「カウンタ変数を複数使う」等で柔軟性を持たせられます。しっかりとしたロジック設計で、複雑な業務フローを効率良く自動化しましょう。

VBA forのよくある質問と検索ニーズ深掘り – 読者が疑問に感じる点を全て網羅したQA集

for i = 1 to 5の意味と基本動作 – カウンタ変数の範囲指定による繰り返し理解

VBAのfor文は処理を繰り返す際の代表的な制御構文です。「for i = 1 to 5」とは、変数iを1から5まで1ずつ増加させながら、指定された処理を5回繰り返す意味になります。iの値はループごとに1ずつ自動で変化し、最初は1、最後は5でループ処理が行われます。whileやdo loopとの大きな違いは、繰り返しの回数が明確に指定できる点です。

カウンタ変数の値は、繰り返しブロック内で利用できるため、連番処理やインデックス参照など幅広い用途に活用できます。下の表に主なポイントをまとめます。

要素 内容
範囲指定 for i = 開始値 to 終了値
1ずつ減らす/増やす step-1 / step1を指定
ループ回数 終了値−開始値+1
カウンタの使い道 配列の要素参照、セル操作、繰り返し処理

VBAでの繰り返し回数制御と条件指定 – 複雑条件のVBA for書き方と考え方

繰り返し回数や条件を動的に変えたい場合、for文のrangeやstep、if文を組み合わせることが重要です。例えば、「for i = 10 to 1 step -1」とすると10から1まで1ずつ減少しながら逆順にループできます。さらに、ループ内で「if i mod 2 = 0 then」として偶数のみ処理を実行したり、複数の条件を追加することも可能です。

配列の要素数を利用して範囲を指定したり、step値に2を設定して1つ飛ばしで処理を行う方法もよく使われています。下記のようなケースがあります。

  • for i = 1 to UBound(arr)

配列の全要素に処理を適用

  • for i = 2 to lastRow step 2

2行目から最終行まで2行ごとに繰り返し

  • if文で複数条件を組み合わせ適用

柔軟な繰り返しやスキップが可能

このように条件指定や繰り返し回数の工夫が、業務効率化や可読性向上に直結します。

途中でループを抜ける手法 – exit forや条件分岐の応用使い分け

ループ処理の途中で条件を満たした際に即座に抜けたい場合、VBAでは「exit for」を使用します。これは、if文などと組み合わせて利用され、指定条件に該当した時点で繰り返しを中断できます。for文に「continue」は直接存在しませんが、「GoTo」やif文による分岐で実現することも可能です。

主なループ制御方法の比較表

制御方法 内容 使用例
exit for 指定条件達成時に即座にループ終了 If A = True Then Exit For
GoTo 特定のラベルに飛ばして次処理へ進める If 条件 Then GoTo NextProc
条件分岐でスキップ 条件に合わない場合のみ処理実行し”飛ばす” If 条件 Then Continue

この仕組みを使えば「vba for 抜ける」「vba for 途中を飛ばす」など思い通りのループ制御が可能になります。トラブル時には、カウンタ変数や条件の設定ミスにも注意が必要です。

配列・多次元配列のforループ活用 – for eachとの役割分担と効果的な使い方

配列や多次元配列をループ処理する際には、for nextとfor eachを状況に応じて使い分けることで可読性と効率化が図れます。一次元配列はfor i = LBound(配列) to UBound(配列)で端か