スポンサードリンク
スポンサードリンク

for

excel vbaの「for」を簡単に説明しました。


excelのvbaをマスターしましょう!
excel vba 簡単・解決! Homeへ
for

excelのvbaで「 for 」は、繰り返す命令です。


for は、excel vbaの中で最も多く使用される命令のひとつです。
単純な繰り返しはvbaに任せましょう。 数万回の繰り返しは、普通の場合、excelでは数分で処理できます。
最近のPCは、約30年前の世界最速のスパーコンピュータと同じ処理スピードがあるからです。
1.For Next 基本形
   For  変数 = 初期値 To 最終値
     繰り返される命令
   Next 変数

2.For Next 途中で終了するには
   For  変数 = 初期値 To 最終値
     繰り返される命令
     If 条件 Then
        Exit For   '(条件が「真」の場合 For Next のループから抜けます。)
     End If
   Next 変数

【vba使用例】

For intI = 1 To 50000
If Cells(intI, 1).Value = "" Then Exit For
   strBUF = Cells(intI, 3).Value
Next intI

このプログラムは、セルA列の1行目から50000行目まで1行増しにstrBUFにC列 intI行 のセル値を代入します。
しかし、If 判断文により、A列の途中に空白があるとき、繰り返しループから抜けます。

3.加算値を指定するには
   For  変数 = 初期値 To 最終値 Step 加算値
     繰り返される命令
   Next 変数
(※ 加算値は、負の値を指定できます。 たとえば、 For intI = 100 To 50 Step -5 。)

4.For Each 文
  コレクションや配列などグループになっている集合体に対して有効です。
  コレクションのインデックスは、1から始まります。
  一方、配列のインデックスは、指定がない場合、0から始まります。
  (※ モジュール(Module)の先頭にOption Base 1と書くと、インデックスは、1からになります。)
  使用例として、Worksheetsコレクションに対して、次の通りです。
   For  Each objSheet In Worksheets
     繰り返される命令
   Next
※ コレクションは、オブジェクトの集合体です。
次の内容は、参考までに説明しました。 詳細過ぎる、と感じる場合、無視願います。
   「Alt+F11」キーを押し、VBE(Visual Basic Editor)を開き、さらに「F2」キーを押すと、オブジェクトブラウザが開きます。
   Range又は Worksheets オブジェクトにどのようなメンバーが含まれているのか見ることができます。
   Cellsは、Rangeオブジェクトのメンバーであることが分かります。


5.その他の繰り返し文 (繰り返し回数が決まっていない場合)
  (1) Do While
     1)基本形
     Do While 条件   条件が真の間繰り返します。
         繰り返す命令  (※ 抜けるために、 Exit Do 命令を使用します。)
     Loop

     2)条件をLoopの最後で判断させる場合
     Do
         繰り返す命令  (※ 抜けるために、 Exit Do 命令を使用します。)
     Loop While 条件

  (2) Do Until
     1)基本形
     Do Untile 条件   条件が真になるまで繰り返します。
         繰り返す命令  (※ 抜けるために、 Exit Do 命令を使用します。)
     Loop

     2)条件をLoopの最後で判断させる場合
     Do
         繰り返す命令  (※ 抜けるために、 Exit Do 命令を使用します。)
     Loop Until 条件

【コラム】 アクティブワークブック全体にvlookup関数を使用するexcel vba自作関数

Function VlookupAllSheets(Look_Value As Variant, Table_Array As Range, Col_num As Integer, Optional Range_look As Boolean)
Dim wSheet As Worksheet
Dim objTable As Range
Dim vFound

On Error Resume Next
For Each wSheet In ActiveWorkbook.Worksheets

With wSheet
Set objTable = .Range(Table_Array.Address)
vFound = WorksheetFunction.VLookup(Look_Value, objTable, Col_num, Range_look)
End With

If Not IsEmpty(vFound) Then Exit For

Next wSheet
Set Table_Array = Nothing
VlookupAllSheets = vFound
End Function

【vba使用例】 B1:D10が入力範囲としました。
=VlookupAllSheets("ねこ",B1:D10, 2, FALSE) などとしてセルに自作関数を入力します。、
アクティブのワークブックの全てのシートを対象にB1:D10から「ねこ」を検索し、同じ2番目のC列を返します。
但し、計算は、数式を入力したとき実行されます。エクセルの自動再計算されません。
理由は、再計算させる命令「Application.Volatile」が書かれていないからです。


excelのvbaをマスターしましょう。


excel vba 簡単・解決! Homeへ
タグ:EXCEL VBA FOR
【基本の最新記事】
posted by Yy at 14:38 | Comment(0) | TrackBack(0) | 基本 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/129485923

この記事へのトラックバック