VBA技術解説
実は奥が深いIfステートメント

ExcelマクロVBAの問題点と解決策、VBAの技術的解説
最終更新日:2013-02-26

実は奥が深いIfステートメント


プログラムと言うものは、

条件により処理する

これにつきます。

つまり、この条件が一番問題となります。

そして、その記述をするものが、

Ifステートメントになります。

If 条件式 Then
  条件式が真(True)の場合の処理
Else
  条件式が偽(False)の場合の処理
End If


条件式は、 真(True)か偽(False)を評価する数式または文字列式を指定します。

例えば、

If A = B Then

  A = B の場合の処理
Else
  A <> B の場合の処理
End If

ここでの、A = Bは、真(True)か偽(False)を返します。

その結果がTrueならThen以下を処理、FalseならElse以下を処理するのです。

では、
Dim A As Boolean
・・・
If A = True Then
  A = True の場合の処理
Else
  A = False の場合の処理
End If

特に問題はなさそうですが、

If A = True Then

実はこれは、かなり無駄なんですね。

AはTrueかFalseな訳ですから、

If A Then

これだけでも良いのです。

よくあるのは

If IsNumeric(A) = True Then

IsNumeric(A)が、真(True)か偽(False)を返しますので

If IsNumeric(A) Then

これだけで良い事になります。

もちろん、 = True を書いても問題ないですし、

むしろ、初心者には解り易いかもしれません。

否定形の場合は

If IsNumeric(A) = False Then

ではなく

If Not IsNumeric(A) Then

このように書いた方が、英文っぽくて格好よくないですか(笑)

上記の場合は、どちらを書いても良いとは思います。

むしろ無理に否定形にしないで、

If IsNumeric(A) Then
Else
  ・・・
End If


このようにElseに記述した方が理解しやすい場合も多いです。

問題は、同じ条件の書き方でも、何通りも書き方があるという点です。

では、どのような書き方が良いかというと、

読みやすい
解り易い


これにつきます。

読みやすく、解り易いコードが一番良いですね。




同じテーマ「VBA技術解説」の記事

プログラミングの基本~ロジックの組み立て

プログラミングの基本というと、プログラミング言語の基本文法についての解説と思われるかもしれませんが、ここでは、プログラミングする上で最も大切な考え方、ロジックの組み立て方について解説します、本来は言語は問わないのですが、VBAのサイトですのでVBAを例に解説します。何かをしようとしたとき、どのような手順になるか… これが重要です。
実は奥が深いIfステートメント
論理積(And)論理和(Or)と真(True)偽(False)の判定
And演算子、Or演算子は、2つの数式内のビット単位の比較を行います、そして、IfステートメントのThenは、Trueの時と言うより、False以外の時に実行されます。何を言っているのか分かりずらいと思いますので、順に解説します。Trueとは何か、Falseとは何か True、Falseを数値で表すと、
If条件式のいろいろな書き方:TrueとFalseの判定とは
If条件式の書き方で、VBAプログラムは大きく様相が変わってきます、VBAを習い始めは、比較演算子で比較した結果が 正しければTrue、間違っていればFalse という事で理解するはずです。しかし、いろいろなサンプルコードを見ていると、「あれっ」比較演算子が無い… というようなIfステートメントやSelectCaseに出くわします。
VBAでの括弧()の使い方、括弧が必要な場合
オブジェクトのメソッドや、プロシージャー(Sub、Function)を呼ぶときに、引数を括弧()で囲うのか、囲わないのか… 初心者が赤い文法エラーが出て悩むことの一つです。VBAでは、どんな時に括弧を付けて、どんな時に括弧を付けないのか… ・括弧が必要な場合 ・括弧が不要な場合 これらについて具体的な例とともに解説します。
VBAにおけるピリオドとカンマとスペースの使い方
VBAの文法の中で、初心者が戸惑うことが多いのが、ピリオド、カンマ、スペース これらの使い方のようです。使い方を間違って、ピリオドを打つべきところにカンマを打ってしまうと、VBAコードが真っ赤になってしまいます。こうなるとビックリしてしまい、冷静に見直すことが出来なくなってしまったりします。
変数とプロシージャーの命名について
VBAを習い始めると、「変数」について学びます、変数に付ける名前を変数名と呼び、若干の規則はあるが、好きな名前を付けて良いと教わります。好きな名前って…ケイコ、ハルカ、アツコ… まあ、それでも良いけど、入れるデータが分かるような名前がよいですね、わかり易い名前を付けましょう。
文字列置換の基本と応用(Replace)
マクロVBAの処理において文字列置換は頻出の処理ですが、これに苦労している初心者の方が多いようです、そこで文字列置換の基本と応用について解説します。・文字列内の空白(半角・全角)を取り除く VBA関数のTrimは前後の空白が削除されるだけです、そこで、Replace関数を使います。
データクレンジングと名寄せ
複数の名簿を突き合わせて一つにする、いわゆる「名寄せ」名寄せを行うためには、その前にデータクレンジングを行う必要があります、データクレンジングとは、データの中から、重複の排除、誤記、表記の揺れの修正などを行い、データの品質を高めることです。データを整形して、扱いやすいデータに変換します。
ForとIfのネストこそがVBAの要点
VBA習得で最も肝心なものは、For文とIf文をしっかりと覚えることです、そして、For文とIf文をネストさせるプログラミング技術の習得です。For~Nextステートメントは、繰り返し処理 If~EndIfステートメントは、条件分岐 つまり、条件により分岐しつつ繰り返し処理を行う。


新着記事NEW ・・・新着記事一覧を見る

トランザクション処理|SQL入門(12月11日)
インデックスを作成して高速化(CREATE INDEX)|SQL入門(12月9日)
他のテーブルのデータで追加/更新/削除|SQL入門(12月8日)
データの削除(DELETE)|SQL入門(12月7日)
データの更新(UPDATE)|SQL入門(12月6日)
複数のSELECT結果を統合(UNION,UNION ALL)|SQL入門(12月5日)
テーブルを結合して取得(INNER JOIN,OUTER JOIN)|SQL入門(12月4日)
データベースの正規化とマスタの作成|SQL入門(12月3日)
データベースにおけるNULLの扱い方|SQL入門(12月2日)
オブジェクト変数とは何か|VBA技術解説(12月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • 実は奥が深いIfステートメント

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
    掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ