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構造を使用することをお勧めします。


SharePointOnlineドキュメントセットを使用してコンテンツを管理する

SharePointOnlineドキュメントセットを使用してコンテンツを管理する

Microsoft Office365製品スイートの1つであるSharePointOnlineでは、ドキュメントセットを使用すると、効率的にプロジェクトごとにドキュメントをグループ化し、管理できます。

SharePointでタグ付けする方法

SharePointでタグ付けする方法

SharePointでのタグ付けは、コンテンツの可視性と検索性を向上させるための重要な手法です。

Excelのソルバーエラーメッセージはどういう意味ですか?

Excelのソルバーエラーメッセージはどういう意味ですか?

Excelのソルバーが表示するエラーメッセージの意味を理解し、最適な解決策を見つける方法について詳しく解説します。

Excelの[ソルバーオプション]ダイアログボックスで[GRG非線形]タブを使用する方法

Excelの[ソルバーオプション]ダイアログボックスで[GRG非線形]タブを使用する方法

Excelの[GRG非線形]タブには、GRG非線形解法を使用しているときにソルバーが機能する方法を管理するためのボタンとボックスがあります。オプションを利用し、最適な解決策を得るためのステップを解説します。

SharePointをPowerBIと統合する方法

SharePointをPowerBIと統合する方法

SharePointをPower BIと統合する方法と、レポートをSharePointサイトに接続する方法をLuckyTemplates.comから学びます。

SharePointサイトを共有およびフォローする方法

SharePointサイトを共有およびフォローする方法

個人やグループがコミュニケーション、コラボレーション、共有、接続できるSharePointソーシャルネットワーキングツールの使用方法を学びます。

SharePoint列のデータ入力を検証する

SharePoint列のデータ入力を検証する

SharePoint列のデータ入力を検証する方法を学び、データの整合性を確保するための実践的なソリューションを提供します。

スマートシート 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 は、携帯電話でカレンダーを表示するアプリケーションです。携帯電話で太陰太陽の日付をすぐに確認できるため、重要な仕事を計画することができます。