ステートメント
・If...End If
・For...Next
・With...End With
【ここでのポイント】
ベーシックでは、最初の3つまでになります。
For...Next
With...End With
Select Case
Do...Loop
For...Eachほか
最も頻繁に使われるステートメントであり、プログラミング学習としては真っ先に学ぶべきものです。
ここの理解が不足していては、その先に進む意味がないと言っても良いでしょう。
従って、ここは時間をかけてしかっりと学んでおく必要があります。
そして、
ここでの学習方法は、必ずタイピングして実際に動かしてください。
机上の勉強では、実際のVBAコードを見たときの読解能力が養われません。
If...End If
ある条件の時だけ処理したい事もあれば、条件によって処理内容を変更したい事もあります、
条件により処理を分岐させたい場合に使うのが、Ifステートメントです。
真の処理
[Else
偽の処理]
End If
[ ]内は省略可能です。
偽とは、条件式を満たさない場合
条件式
文字列式とは、文字列と比較演算子・論理演算子の組み合わせです。
比較演算子 | 意味 |
= | 等しい |
<> | 等しくない |
> | より大きい |
>= | 以上 |
< | より小さい |
<= | 以下 |
論理演算子 | 意味 |
And | 論理積 |
Or | 論理和 |
Xor | 排他論理和 |
Eqv | 論理等価 |
Imp | 論理包含 |
Not | 論理否定 |
And、Or、Not以外の論理演算子は覚えなくて構いません。
例文1.
If Cells(1, 1) >= 100 Then Cells(1, 2) = "○"
A1セルが100以上の場合、B1セルに"○"
例文2.
If Cells(1, 1) > 100 Then
Cells(1, 2) = "○"
End
If
例文1.と同じです。
例文3.
If Cells(1, 1) > 100 Then
Cells(1, 2) = "○"
Else
Cells(1, 2)
= "×"
End If
A1セルが100以上の場合、B1セルに"○"
A1セルが100未満の場合、B1セルに"×"
例文4.
If Cells(1, 1) > 100 Then Cells(1, 2) = "○" Else Cells(1, 2) =
"×"
例文3.と同じです。
ただし、この使い方は一般的にもしませんし、出題されるとは思われません。
真偽を入れ替える方法
If Cells(1, 1) > 100 Then
Cells(1, 2) = "○"
Else
Cells(1, 2)
= "×"
End If
この真と偽を入れ替える方法は、以下の2通りになります。
If Cells(1, 1) <= 100 Then
Cells(1, 2) = "×"
Else
Cells(1, 2) = "○"
End If
Not演算子を使う
If Not Cells(1, 1) > 100 Then
Cells(1, 2) = "×"
Else
Cells(1, 2) = "○"
End If
= ⇔ <>
> ⇔ <=
>= ⇔ <
< ⇔ >=
<= ⇔ >
↓
A <> B Or C <> D
または
Not (A = B And C = D)
Ifのネスト(入れ子)
If Cells(1, 1) >= 100 Then
If Cells(1, 1) >= 200
Then
Cells(1, 2) = "A" '>= 200
Else
Cells(1, 2) =
"B" '>=100 AND < 200
End If
Else
If Cells(1, 1) >= 50
Then
Cells(1, 2) = "C" '< 100 AND >= 50
Else
Cells(1, 2) = "D" '< 50
End If
End
If
A1セルが
>= 200の場合、B1セルに"A"
>=100 AND < 200の場合、B1セルに"B"
< 100 AND >= 50の場合、B1セルに"C"
< 50の場合、B1セルに"D"
実務としては、概ね3段階までにしましょう。
試験としては、2段階までしか出題されないと思います。
IfステートメントでのElsiIf
条件式1が真の処理
[ElseIf 条件式2 Then
条件式2が真の処理]
[ElseIf 条件式3 Then
条件式3が真の処理]
・・・
[Else
全ての条件式が偽の処理]
End If
ElseIf 条件式 Then
条件式が真の処理
条件式1が真の処理
ElseIf 条件式2
条件式2が真の処理
ElseIf 条件式3
条件式3が真の処理
Else
全ての条件式が偽の処理
End If
条件式1が真の処理
Else
If 条件式2
条件式2が真の処理
Else
If 条件式3
条件式3が真の処理
Else
全ての条件式が偽の処理
End If
End If
End If
多肢分岐の場合は、ElseIfを使う事でずっと見易くなります。
ElseIfを使ったVBAコードを、ElseIfを使わずに書き換える
これらは、すんなりできるようにしておきましょう。
この書き換えができるようなら、Ifステートメントを理解できているという判断にもなります。
For...Next
For Nextは、繰り返し処理をするためのステートメントです。
繰り返す処理をループ処理と言い、For Nextを使います。
[statements]
[Exit For]
[statements]
Next [counter]
counter | 必ず指定します。 カウンタに使う数値変数を指定します。 配列変数およびブール型 (Boolean) に含まれる変数は指定できません。 |
start | 必ず指定します。 引数 counter の初期値を指定します。 |
end | 必ず指定します。 引数 counter の最終値を指定します。 |
step | 省略可能です。 ループを繰り返すごとに引数 counter に加算される値を指定します。 引数 step を省略すると、ループを繰り返すごとに引数 counter には 1 が加算されます。 |
statements | 省略可能です。 ループ内で実行される一連のステートメントで、For と Next の間に記述します。 ここに記述したステートメントは、For...Next ステートメントで指定した回数だけ実行されます。 |
上記構文の余分なものを消して、日本語に直してみましょう。
・・・処理・・・
Next
例文で理解を深めて下さい。
Sub 練習1()
Dim i
For i = 1 To 10
Cells(i, 1) = 1
Next
i
End Sub
変数iが、1から10まで、自動的にアップしていきます。
Cells(2, 1) = 1
・・・
Cells(10, 1) = 1
では、1行目、3行目、5行目・・・のように、
1行置きにする場合
Sub 練習2()
Dim i
For i = 1 To 10 Step
2
Cells(i, 1) = 1
Next i
End Sub
Step 2
Exit For
しかし、発表されている出題範囲はそこまで詳細に書かれていません。
従って、出題されないとも限りませんし、
何より、ここで概要だけでも一緒に学んでおくべきものです。
Sub 練習3()
Dim i
For i = 1 To 10
If Cells(i, 1) <> "" Then
Exit For
End If
Cells(i, 1) = 1
Next
End Sub
10行目まで繰り返すが、もしA列に既に値が入っていたら、そこで終了するという処理になります。
For~Nextのネスト(入れ子)
Sub 練習3()
Dim i, j
For i = 1 To 10
For j = 1 To
10
Cells(i, j) = 1
Next j
Next i
End
Sub
実行して、確認して下さい。
実務としても、2段階くらいまでが普通ですので、
試験対策としても、2段階までで良いでしょう。
With...End With
With ステートメントは、指定したオブジェクトに対してオブジェクト名を再定義することなく、一連のステートメントを実行することができます。
[statements]
・・・
End With
Withステートメントを使わない通常の記述では、
.プロパティ = 値
End With
Worksheets(1).Cells(1, 1) = 1
Worksheets(1).Cells(2, 1) = 2
これを、Withを使って書くと、
With Worksheets(1)
.Cells(1, 1) = 1
.Cells(2, 1) = 2
End With
With~End Withの間では、
Range("A1").Font.Bold = True
Range("A1").Font.Color =
vbRed
Range("A1").Font.Size = 12
これを、Withを使うと、
With Range("A1")
.Font.Bold
= True
.Font.Color =
vbRed
.Font.Size = 12
End
With
これは、さらに
With Range("A1").Font
.Bold
= True
.Color =
vbRed
.Size = 12
End
With
このように書くこともできます。
Withのネスト
With Range("A1")
With .Font
.Bold = True
.Color = vbRed
.Size = 12
End With
End
With
Withがネストされている場合に、.の前の省略されているオブジェクトは、
直前(そのステートメントが含まれる最も内側)のWithステートメント
Withステートメントを使った時の、最も多い間違いは、先頭の「.」を書き忘れてしまう事でしょう。
とにかく、Withが出てきたら.の有無をしっかり見るようにして下さい。
【業務改善の実務】
ここでのステートメントの理解無くして、実務でVBAを使う事は出来ません。
VBAの構文や変数の勉強に時間をかける前に、
とにかく最初に、
セルの操作と、このステートメントからここから始めることが早道です。
その他の事は、やりながら覚えるくらいでちょうど良いとも言えます。
とにかく書いて動かす
この繰り返しでしかマスターすることは出来ないと言っても良いでしょう。
【本サイト内の関連ページ】
第21回.条件分岐(ElseIf)
第16回.繰り返し処理(For Next)
第51回.Withステートメント
VBAエキスパート公式テキスト
こちらは必須として購入した方が良いでしょう。
ちょっと高いなーとは思いますが、
書籍を購入することで、学習用データが提供されています。
・サンプルブック
・VBAエキスパート模擬問題
これらが使えるようになります。
このシリーズでは、テキストを読みながら学習していることを前提とします。
同じテーマ「VBAエキスパート対策」の記事
VBAの構文
変数と定数
セルの操作
ステートメント
ブックの操作
シートの操作
デバッグデの基礎
マクロの実行
VBAベーシック試験対策まとめ
プロシージャ
イベント
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、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)
アクセスランキング ・・・ ランキング一覧を見る
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.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
- ホーム
- マクロVBA入門編
- VBAエキスパート対策
- ステートメント
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。