7)ステートメント IF With

目次

Excel VBA ベーシック出題範囲

  1. マクロの概念
  2. マクロ記録
  3. モジュールとプロシジャー
  4. VBAの構文
  5. 変数と定数
  6. セルの操作
  7. ステートメント
  8. 関数
  9. ブックとシート操作 マクロの実行

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
よかったらシェアしてね!
目次