Excel 2016VBAでIf-Thenを使用する方法

If-Thenは、VBAの最も重要な制御構造です。このコマンドは、おそらく日常的に使用します。1つ以上のステートメントを条件付きで実行する場合は、If-Then構造体を使用します。オプションのElse句が含まれている場合、テストしている条件が真でない場合に1つ以上のステートメントを実行できます。これは、If-Then-Else構造を使用するように再コーディングされた簡単なCheckUserプロシージャです。

サブCheckUser2()
  UserName = InputBox(“名前を入力してください:“)
  UserName =“ Satya Nadella”の場合
    MsgBox(「WelcomeSatya…」)
'…[ここにコードを追加]…
  そうしないと
    MsgBox「ごめんなさい。これを実行できるのはSatyaNadellaだけです。」
  終了する場合
エンドサブ

If-Thenの例

次のルーチンは、オプションのElse句を指定しないIf-Then構造を示しています。

サブGreetMe()
  時間<0.5の場合MsgBox「おはよう」
エンドサブ

GreetMeプロシージャは、VBAのTime関数を使用してシステム時刻を取得します。現在の時刻が0.5未満の場合、ルーチンはフレンドリーな挨拶を表示します。Timeが.5以上の場合、ルーチンは終了し、何も起こりません。

Timeが.5以上の場合に別のグリーティングを表示するには、最初のステートメントの後に別のIf-Thenステートメントを追加します。

サブGreetMe2()
  時間<0.5の場合MsgBox「おはよう」
  時間> = 0.5の場合MsgBox「GoodAfternoon」
エンドサブ

> =(以上)が2番目のIf-Thenステートメントに使用されていることに注意してください。これにより、1日が確実にカバーされます。>(より大きい)が使用された場合、この手順が正午に正確に実行された場合、メッセージは表示されません。それはほとんどありそうにありませんが、このような重要なプログラムでは、チャンスを逃したくありません。

If-Then-Elseの例

前述の問題に対する別のアプローチでは、Else句を使用します。これは、If-Then-Else構造を使用するように再コーディングされた同じルーチンです。

サブGreetMe3()
  時間<0.5の場合MsgBox「おはよう」Else_
    MsgBox「グッドアフタヌーン」
エンドサブ

前の例では、行継続文字(アンダースコア)が使用されていることに注意してください。If-Then-Elseステートメントは、実際には単一のステートメントです。VBAは、EndIfステートメントを使用するIf-Then-Else構造をコーディングするわずかに異なる方法を提供します。したがって、GreetMeプロシージャは次のように書き直すことができます。

サブGreetMe4()
  時間<0.5の場合
    MsgBox「おはよう」
  そうしないと
    MsgBox「グッドアフタヌーン」
  終了する場合
エンドサブ

実際、If部分の下に任意の数のステートメントを挿入し、Else部分の下に任意の数のステートメントを挿入できます。この構文は読みやすく、ステートメントが短くなります。

朝、午後、夕方の3つの条件を処理するために、GreetMeルーチンを拡張する必要がある場合はどうなりますか?2つのオプションがあります。3つのIf-Thenステートメントを使用するか、ネストされたIf-Then-Else構造を使用します。ネストとは、If-Then-Else構造を別のIf-Then-Else構造内に配置することを意味します。3つのIf-Thenステートメントを使用する最初のアプローチは、より単純です。

サブGreetMe5()
 文字列としての薄暗いメッセージ
 時間<0.5の場合Msg =“ Morning”
 時間> = 0.5かつ時間<0.75の場合Msg =“ Afternoon”
 時間> = 0.75の場合Msg =“ Evening”
 MsgBox「Good」&Msg
エンドサブ

変数を使用して新しいひねりが追加されました。Msg変数は、時刻に応じて異なるテキスト値を取得します。MsgBoxステートメントには、「おはよう」、「午後」、または「こんばんは」という挨拶が表示されます。

次のルーチンは同じアクションを実行しますが、If-Then-EndIf構造を使用します。

サブGreetMe6()
  文字列としての薄暗いメッセージ
  時間<0.5の場合
    Msg =「朝」
  終了する場合
  時間> = 0.5かつ時間<0.75の場合
    Msg =「午後」
  終了する場合
  時間> = 0.75の場合
    Msg =「夜」
  終了する場合
  MsgBox「Good」&Msg
エンドサブ

ElseIfの使用

前の例では、ルーチン内のすべてのステートメントが実行されます。条件が真であることが判明するとすぐに、もう少し効率的な構造がルーチンを終了します。たとえば、午前中に、プロシージャはおはようメッセージを表示してから終了する必要があります—他の余分な条件を評価することはありません。

このような小さなルーチンを使用すると、実行速度について心配する必要はありません。ただし、速度が重要な大規模なアプリケーションの場合は、If-Then構造の別の構文について知っておく必要があります。

この構文を使用してGreetMeルーチンを書き直す方法は次のとおりです。

サブGreetMe7()
 文字列としての薄暗いメッセージ
 時間<0.5の場合
   Msg =「朝」
 ElseIf Time> = 0.5 And Time <0.75 Then
   Msg =「午後」
 そうしないと
   Msg =「夜」
 終了する場合
 MsgBox「Good」&Msg
エンドサブ

条件が真の場合、VBAは条件ステートメントを実行し、If構造体が終了します。つまり、この手順は前の例よりも少し効率的です。トレードオフは、コードが理解しにくいことです。

別のIf-Thenの例

これは、If-Then構造の単純な形式を使用する別の例です。この手順では、ユーザーに数量の入力を求め、ユーザーが入力した数量に基づいて適切な割引を表示します。

サブShowDiscount()
  薄暗い量
  ダブルとしての薄暗い割引
  数量= InputBox( "数量を入力:")
  数量> 0の場合、割引= 0.1
  数量> = 25の場合割引= 0.15
  数量> = 50の場合割引= 0.2
  数量> = 75の場合割引= 0.25
  MsgBox「割引:」&割引
エンドサブ

このルーチンの各If-Thenステートメントが実行され、Discountの値はステートメントの実行時に変更される可能性があることに注意してください。ただし、If-ThenステートメントはDiscount値の昇順であるため、ルーチンは最終的にDiscountの正しい値を表示します。

次の手順では、代替のElseIf構文を使用して同じタスクを実行します。この場合、ルーチンは、真の条件のステートメントを実行した直後に終了します。

サブShowDiscount2()
 薄暗い量
 ダブルとしての薄暗い割引
 数量= InputBox( "数量を入力:")
 数量> 0かつ数量<25の場合
  割引= 0.1
 ElseIf数量> = 25および数量<50Then
  割引= 0.15
 ElseIf数量> = 50かつ数量<75Then
  割引= 0.2
 ElseIf数量> = 75 Then
  割引= 0.25
 終了する場合
 MsgBox「割引:」&割引
エンドサブ

これらの複数のIf-Then構造は、かなり面倒です。単純なバイナリ決定にのみIf-Then構造を使用することをお勧めします。


スマートシート 9.1.1

スマートシート 9.1.1

Smartsheet は、プロジェクトの管理、ワークフローの構築、チームとの共同作業を可能にする動的な作業プラットフォームです。

共有ポイント

共有ポイント

SharePoint は、さまざまなワークフロー アプリケーション、「リスト」データベース、その他の Web コンポーネント、およびビジネス グループの共同作業を制御するためのセキュリティ機能を使用する Web ベースのコラボレーション システムです。

パーペチュアルカレンダー 1.0.38/1.0.36

パーペチュアルカレンダー 1.0.38/1.0.36

Van Nien Calendar は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。

Microsoft Outlook 2021

Microsoft Outlook 2021

Microsoft Outlook は、Microsoft Corporation によって開発されたビジネスおよび生産性アプリケーションです。

クリックアップ

クリックアップ

ClickUp は、あらゆるビジネスにとって最も評価の高い生産性プラットフォームの 1 つです。Google、Booking.com、サンディエゴ・パドレス、Uber などの大企業はすべて、職場の生産性を向上させるために ClickUp を使用しています。

PDF-XChange ビューア 2.5.322.10

PDF-XChange ビューア 2.5.322.10

PDF は、テキスト ドキュメントの読み取り、作成、送信に一般的に使用される形式になっています。その結果、この種のドキュメントに使用されるプログラムの数も増加しました。PDF-XChange Viewer は、ますます多くの PDF ビューアの 1 つです。

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice は、特に Excel、PowerPoint、Word など、Microsoft 365 に匹敵する Office アプリケーションの完全なスイートを提供します。プロジェクトをより効率的に管理できるようになり、いくつかのファイル形式がサポートされます。

iTaxviewer 1.8.7をダウンロード

iTaxviewer 1.8.7をダウンロード

iTaxViewer ソフトウェアは、現在最も人気のある XML ファイル読み取りソフトウェアです。このソフトウェアは、国税総局のXML形式の電子申告書を閲覧するためのアプリケーションです。

Nitro PDF リーダー

Nitro PDF リーダー

Nitro PDF Reader は、ほとんどの人が PDF ドキュメントを使用して毎日実行する基本的なタスクをすべてカバーする便利な PDF エディターです。

Foxit リーダー 12

Foxit リーダー 12

Foxit Reader は主に PDF リーダーですが、PDF ファイルの作成、署名、編集、注釈の追加も可能です。オペレーティング システム上で動作し、Microsoft Office パッケージのさまざまなプログラム用のプラグインがあります。