« Rotate cell contents 90 degrees, -90 degrees and 180 degrees | トップページ | Using For Statements and Templates about it »

2018年3月25日 (日)

For文の使い方とテンプレート

VBAをしばらく使っていないと
For文などの基本的な事も結構忘れてしまいます。

そんな時のために
コピぺして使えるテンプレートを作っておきます。

Integer型の変数の宣言と
For文はセットで使われるので
まとめてテンプレートにしておきます。
For文の中はよく使うかなと思うものにしました。
状況にあわせて変更してください。

For文の使い方1:
まずは一番シンプルな使い方のテンプレートを作ります。

i = 1から始めます。
For文の中を実行して
Next i で i が +1 されてi = 2になります。
i が5以下なので
再度For文の中を実行します。
Next i で i が +1 されてi = 3になります。
このようなループを繰り返して
Next i で i が +1 されてi = 6になると
iは5よりも大きくなるのでFor文を終了します。

コードはこちら

For文の使い方1:

Sub macro180325a()
'For文の使い方1
'(i, 1)のセルにiの値を入力する

    Dim i As Integer
   
    For i = 1 To 5
        
        Cells(i, 1) = i
          
    Next i
   

実行結果:
Vba20180325a

For文の使い方2:
次は"For文の使い方1"を改造して
iがNext iで+2されるようにします。

「For i = 1 to 5」の後に
「Step 2」を加えて
「For i = 1 to 5 Step 2」にします。
実は"For文の使い方1"では「Step 1」が省略されています。
Stepを省略するとiの増分は+1になります。
Stepの後には任意の整数を指定出来ます。

コードはこちら

For文の使い方2:

Sub macro180325b()
'For文の使い方2
'(i, 1)のセルにiの値を入力する

    Dim i As Integer
    
    For i = 1 To 5 Step 2
       
        Cells(i, 1) = i
          
    Next i
   
End Sub

実行結果:
Vba20180325b

For文の使い方3:
再度、"For文の使い方1"を改造して
条件によりFor文の途中で抜ける方法を
テンプレートにしておきます。

For文の中に「Exit For」を記述することで
途中でもFor文を抜けることができます。
「Exit For」はFor文の中で何回でも使えます。

条件判断はIf文を使います。

コードはこちら

For文の使い方3:

Sub macro180325c()
'For文の使い方3
'flag >< 0のとき、
'(i, 1)のセルにiの値を入力する
'flag = 0のとき、
'For文の中を実行しないでFor文を抜ける

    Dim i As Integer
    Dim flag As Integer
    flag = 0
   
    For i = 1 To 5
    
        If flag = 0 Then
            Cells(i, 1) = "Exit"
            Exit For
        End If
        
        Cells(i, 1) = i
          
    Next i
   
End Sub

flag = 0のときの実行結果:
Vba20180325c

上記のコードのflagを0以外にすると
"For文の使い方1"と同じ実行結果になります。

For文の使い方4:
次は"For文の使い方3"を改造して
条件によりFor文の中を実行しないで、次のループにいきたい場合
また、For文の途中で次のループにいきたい場合の方法です。
For文の最終行に飛ぶのに「GoTo」を使います。
「GoTo」は指定した行ラベルに飛び実行を続けます。
行ラベルは「任意の名前:」で指定できます。

コードはこちら

For文の使い方4:

Sub macro180325d()
'For文の使い方4
'iが奇数のとき、
'(i, 1)のセルにiの値を入力する
'iが 偶数のとき、
'For文の中を実行しないでSTEP1に行く

    Dim i As Integer
   
    For i = 1 To 5
    
         If i Mod 2 = 0 Then
            Cells(i, 1) = "GoTo"
            GoTo STEP1
         End If
       
        Cells(i, 1) = i
STEP1:
    Next i
   
End Sub

実行結果:
Vba20180325d

For文の使い方5:
次はFor文を入れ子にして使う方法をテンプレートにしておきます。
変数をi, jの2つ宣言してFor文に使います。

コードはこちら

For文の使い方5:

Sub macro180325e()
'For文の使い方5
'2重入れ子
'セル(i, j)に出力

    Dim i As Integer, j As Integer
      
    For i = 1 To 5
        For j = 1 To 3
                       
            Cells(i, j) = i & ", " & j
            
        Next j
    Next i
   
End Sub

実行結果:
Vba20180325e

|

« Rotate cell contents 90 degrees, -90 degrees and 180 degrees | トップページ | Using For Statements and Templates about it »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: For文の使い方とテンプレート:

« Rotate cell contents 90 degrees, -90 degrees and 180 degrees | トップページ | Using For Statements and Templates about it »