スポンサーリンク

エクセル関数IFをVBAでやる方法

Excel-VBA

エクセルVBAに取り組むようになっていつも思いませんか

エクセル関数でできる事をVBAでできないものか

波乗りアヒル
波乗りアヒル

最初に思ったのがIF関数!

和暦西暦変換対応カレンダーを作った時に、祝日は文字色を赤色に変更して欲しいって思ったからです。

エクセル関数にVBAを付け加えて簡単に作れます

エクセル関数とVBAで和暦西暦対応カレンダー作成
エクセル関数を基本として作成し、和暦も西暦も変換対応させてVBAユーザーフォーム上で入力するオリジナルカレンダーってなかなか見つけられないので作ってみました。

もし祝日だったら文字色赤色、そうでなかったら黒色っていうIF関数をVBAでやりたい!

スポンサーリンク

条件によって処理を振り分けるIFステートメント

基本的な考え方は、IF関数と全く一緒なので、和暦西暦対応カレンダーや住所録にも使っている実例を参考に書いていきます。

1つの条件を満たした時だけ処理を実行する

下の図のセルD12の値は「0」になっています。セルD13の値のように「0」以外の数字もあります。

D列の値はカレンダーの関係上祝日は月によって替わるので、基本は「0」にしておいて祝日の時だけ文字列表示しています。

考え方としては、『もしセルD5の値が「0」だったら、文字色を黒色にする』という、1つの条件を満たした時だけ処理を実行するVBAコードを使っています。

カレンダー日付一覧

この場合、IFステートメントを使いこのような式になります。

IF 条件式 Then
処理
End If

実例の式を書くと、

Private Sub CommandButton38_Click()
If Range(“D12”).Value = 0 Then
CommandButton2.ForeColor = RGB(0, 0, 0)
End If
End Sub

  1. コマンドボタン38を押したら
  2. もしセルD12の値が「0」だったら
  3. コマンドボタン2の文字色を黒色にする
  4. Ifステートメント終了
  5. マクロ終了

これで、条件に合った時だけ処理をして、合わない時は何もしないということができるようになります。

1つの条件を満たした時の処理と満たさなかった時で処理を振り分ける

次に、IF関数と同じように「もし~だったら、○○、そうでなかったら××」をVBAコードで書いていきます。

下の図は住所録を抜粋した画像で、「更新済」と「未更新」を振り分けています。

画像にはありませんが、セルP2に基準日が入力されています。

この基準日以降に手続きをしていれば更新「済」、そうでなければ「未更新」と処理を振り分けています。

住所録更新状況

この場合、IFステートメントを使いこのような式になります。

IF 条件式 Then
処理1
Else
処理2
End If

先ほどと違うのは、Elseの後に満たさなかった時の処理が加わっています。

Private Sub CommandButton1_Click()
If Range(“AV2”).Value >= Range(“P2”) .Value Then
Range(“AX2”).Value = “済”
Else
Ranbe(“AX2”).Value = “未更新”
End If
End Sub
  1. コマンドボタン1を押したら
  2. セルAV2の値がセルP2の値より大きかったら
  3. セルAX2の値を「済」にする
  4. そうでなかったら
  5. セルAX2の値を「未更新」にする
  6. Ifステートメント終了
  7. マクロ終了

このようになります。

Excel-VBAもくじへ

コメント