目次
Excel VBA ベーシック出題範囲
- マクロの概念
- マクロ記録
- モジュールとプロシジャー
- VBAの構文
- 変数と定数
- セルの操作
- ステートメント
- 関数
- ブックとシート操作 マクロの実行
7-2)IFステートメント
Ifステートメントは、条件分岐をする為に使用されます。

7-2-1)条件を指定する
条件を指定する為には、論理式を使用します。

比較演算子
比較演算子は、値を比較し、True、False、または Null の結果を返すために使います。
| 演算子 | 使用例 | 用途 |
| < | 値1 < 値2 | 値1が 値2よりも小さい場合に True を返します。 |
| <= | 値1 <= 値2 | 値1が 値2以下の場合に True を返します。 |
| > | 値1 > 値2 | 値1が 値2よりも大きい場合に True を返します。 |
| >= | 値1 >= 値2 | 値1が 値2以上の場合に True を返します。 |
| = | 値1 = 値2 | 値1が 値2の値と等しい場合に True を返します。 |
| <> | 値1 <> 値2 | 値1が 値2の値と等しくない場合に True を返します。 |
基本構文
論理式: 値1 論理演算子 値2
例
値1は、値2より、小さい
値1 < 値2
値によって、論理式が成立すれば Ture を返し、成立しなければ False を返します。
Cells(2,2).value < 50 ‘セル(2,2)の値は、50よ小さい
セル(2,2)の値が、30 ならば、50より小さいので、True(真)を返します。
セル(2,2)の値が、90 ならば、50より大きいので、false(偽)を返します。
7-2)ifステートメント
基本構文1
処理が1文の時利用する
If 条件 then 処理
If Range("C7") = Range("E7") Then Debug.Print "C7 と E7 は等しい"
基本構文2
処理が複数行の時利用する
If 条件 then
処理
処理
End if
If Range("C8") < Range("E8") Then
Debug.Print "C8 は E8 より小さい"
End If
基本構文3
条件が不成立の時の処理を記述する
If 条件 then
処理1
Else
処理2
End if
If Range("C9") <= Range("E9") Then
Debug.Print "C9 は E9 以下"
Else
Debug.Print "C9 は E9 より小さい"
End If


7-2-2)複数の条件を指定する
複数の条件で、条件を指定するには、Or や and を使います。
2つの条件が両方成立する場合(AND)
‘2つの条件が両方成立する場合(AND)
Dim i As Long
'Row の最終行を調べる
lastRow = Range("C10").End(xlDown).row
For i = 10 To lastRow
'国語 60 以上 かつ 算数 60以上の場合
If Cells(i, "D") >= 60 And Cells(i, "E") >= 60 Then
Cells(i, "K") = "合格"
Else
'そうでない場合
Cells(i, "K") = ""
End If
Next i

IFの入れ子にするとAND条件になる
'2つの条件が両方成立する場合(AND)
Dim i As Long
'Row の最終行を調べる
lastRow = Range("C10").End(xlDown).row
For i = 10 To lastRow
If Cells(i, "D") >= 60 Then
If Cells(i, "E") >= 60 Then
'国語 60 以上 かつ 算数 60以上の場合
Cells(i, "L") = "合格"
Else
'そうでない場合
Cells(i, "L") = ""
End If
End If
Next i
2つの条件のいずれかが成立する場合(OR)
'2つの条件のいずれかがする場合(AND)
Dim i As Long
'Row の最終行を調べる
lastRow = Range("C10").End(xlDown).row
For i = 10 To lastRow
If Cells(i, "D") >= 60 Or Cells(i, "E") >= 60 Then
Cells(i, "K") = "合格"
Else
Cells(i, "K") = ""
End If
Next i

‘IFを並べるとOR条件になる
'IFを並べるとOR条件になる
Dim i As Long
'Row の最終行を調べる
lastRow = Range("C10").End(xlDown).row
For i = 10 To lastRow
'前のデータをクリア
Cells(i, "L") = ""
'国語が60以上の場合
If Cells(i, "D") >= 60 Then
Cells(i, "L") = "合格"
End If
'算数が60以上の場合
If Cells(i, "E") >= 60 Then
Cells(i, "L") = "合格"
End If
Next i

7-3)Withステートメント
VBAの With ステートメントは、オブジェクトや一連のオブジェクトのプロパティやメソッドに対する複数の参照を簡素化するために使用されます。
With ステートメントを使うことで、繰り返し同じオブジェクト名を入力する手間を省き、コードを読みやすく、効率的にします。
基本構文
With object ‘ 複数のプロパティやメソッドの呼び出し
.Property1 = value1
.Property2 = value2
.Method1 .Method2
End With
‘セルC9のプロパティを変更する
‘セルC9のプロパティを変更する
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.Range(“C9")
.Value = "Hello"
.Font.Bold = True
.Font.Color = RGB(255, 255, 255)
.Interior.Color = RGB(0, 128, 0)
End With
グラフのプロパティを変更する
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim chartName As String
Set ws = ActiveSheet ' 対象のワークシートを設定
Set chartObj = ws.ChartObjects.Add(Left:=250, Width:=375, Top:=50, Height:=225)
With chartObj.Chart
.SetSourceData Source:=ws.Range("C10:I14") ' グラフのデータ範囲を設定
.ChartType = xlColumnClustered ' グラフの種類
.HasTitle = True ' グラフタイトル
.ChartTitle.Text = "Game Player"
.Axes(xlCategory).HasTitle = True ' 軸ラベル(縦)
.Axes(xlCategory).AxisTitle.Text = "Unit"
.Axes(xlValue).HasTitle = True ' 軸ラベル(縦)
.Axes(xlValue).AxisTitle.Text = "Sales"
.PlotBy = xlColumns ' xlRows行としてプロットされる
End With