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


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

Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)


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

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



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

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


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




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