vbaが説明に優れている場合。 系統だった指示とタスク。 条件の場合、式
If ... Then ... Elseステートメント。
このレッスンでは、-演算子などのトピックに焦点を当てます。 特に、If ... Then ... Else演算子、および算術演算子と比較演算子に精通します。これがないと、If ... Then ... Else演算子をに適用できません。最大。
Visual Basicにはかなりの数の異なる演算子があり、それらのいくつかは熟練したプログラマーの頭脳を沸騰させる可能性があります。 「沸騰」しないように、プログラムの95%が機能する最も基本的な演算子のみを考慮し、必要に応じて残りの演算子を調査するため、教科書全体を覚える必要がなく、すぐに続行できます。実践的な演習に。
このレッスンを投稿することで、あなたは小学校の数学の知識を持っていることを意味します。
どんな知識? これらは、私たちが減算、加算、乗算したまさにその例です...あなたはそれを覚えていますか? 罰金! そのため、フラスコにはまだ火薬が残っています。
If ... Then ... Else演算子の学習を開始する前に、算術演算子と論理演算子に精通する必要があります。これがないと、If ... Then ... Else演算子を深い観点から適用することはできません。練習。 さて、十分な退屈な指示と逸脱、座ってビジネスに取り掛かってください!
算術演算子
これらの演算子の助けを借りて、あなたはすることができます。 除算、乗算、加算など。
すべてが小学校と同じくらい簡単です。
+(追加)
-(減算)
*(乗算)
/(余りのある除算) 学校では、除算記号はこの記号でした :
これらの違いを覚えて、混乱させないでください
\(整数除算、余りなし)
比較演算子
これらは非常に重要な演算子です。 これらの演算子を使用して、数値、文字列、およびその他のデータを比較できます。 比較演算子がないと、プログラムでロジックを構築したり、分岐したりすることはできません。
比較演算子は2つの式を比較し、True(条件がtrueの場合)およびFalse(条件がtrueでない場合)の形式のブール値を返すことを覚えておくことが重要です。
英語から真に翻訳されたということは-真
英語からの偽の翻訳は-偽を意味します
移動中は理解できないように見えるかもしれませんが、心配しないでください。少し後に、このすべての悪魔の意味が理解できるようになります。
=(等しい)
最初の式の値は2番目の式の値と等しいか、2つの計算の加算/減算/ ...の結果である可能性があります。
<>
(不平等)
最初の式の値が2番目の式の値と等しくありません
<
(小さい)
最初の式の値が2番目の式の値よりも小さい
>
(もっと)
最初の式の値が2番目の式の値よりも大きい
<=
(以下)
最初の式の値が2番目の式の値以下である
>=
(多かれ少なかれ)
最初の式の値が2番目の式の値以上である
なるほど、あなたはすでに怖がっています。実際、ひどいことは何もありません!
読み進めると、すべてが非常に単純であることがわかります。
以下では、例と実際にすべてを徹底的にバックアップします。
そこで、算術演算子と論理演算子を調べました。これで、If ... Then ... Else演算子自体に直接移動できます。
If ... Then ... Elseステートメント
まず、英語からロシア語に翻訳したときのオペレーターの言葉の意味を見てみましょう。
IfはIfとして変換されます
次に、Toとして変換されます
ElseはElseに変換されます
If ... Then ... Elseステートメントは何に使用されますか?
この演算子を使用すると、プログラムを分岐できます。この演算子がないと、本格的なプログラムを作成することはできません。
典型的な例に移りましょう。
コンピューターはIf ...ステートメントをどのように処理しますか?
2つの変数があるとしましょう:
Dim var1 = 10 Dim var2 = 5
条件があるとしましょう:
If var1> var2 Then MsgBox( "はい、var1はvar2より大きい")End If
上記の条件はどのように機能しますか?
コンピューターは変数var1とvar2を調べ、var1が実際にvar2より大きい場合、条件はtrue(True)であり、コンピューターはMsgBoxを表示します。
条件が真でない場合(False)、コンピューターはMsgBoxを表示しません。
変数の値を他の数値に変更して条件が真にならないようにすることでこれを確認できます。そうすると、MsgBoxは表示されなくなります。
注意!
例を研究するためにそれは必要です。
フォーム上にプロジェクトを作成したら、マウスの左ボタンでボタンをダブルクリックする必要があります。コードエディターが開き、カーソルが例のコードを挿入する必要のある場所に配置されます。未満。
コードを挿入した後、フォームにあるボタンをクリックして結果を確認する必要もあります。
の例
以下は、次の順序の例です。
算術演算子
+(追加)
-(減算)
*(乗算)
/ (分割)
ネタバレ: 算術の例-クリック
+追加:
"この例は、2つの数値を加算する方法を示しています。Dimchislo1As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 + chislo2 MsgBox(resultat)
-減算:"この例は、2つの数値の差を取得する方法を示しています(減算)Dim chislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1-chislo2 MsgBox(resultat)
*乗算:"この例は、ある数値に別の数値を掛ける方法を示しています。Dimchislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 * chislo2 MsgBox(resultat)
/ 分割:"この例は、ある数値を別の数値で除算する方法を示しています。Dimchislo1 As Integer = 5 Dim chislo2 As Integer = 5 Dim resultat As Integer resultat = chislo1 / chislo2 MsgBox(resultat)
比較演算子
=(等しい)
<>
(不平等)
<
(小さい)
>
(もっと)
<=
(以下)
>=
(多かれ少なかれ)
ネタバレ: 比較演算子-クリック
=等しい:
"この例は、変数内のテキストが指定した別のテキストと等しいかどうかを確認する方法を示しています。DimstrokaAs String =" Hello NubClub! "" strokaが二重引用符で囲まれたテキストと等しい場合は、表示してください。 MsgBox If stroka = "Hello NubClub!" 次に、MsgBox( "変数は探しているテキストと同じです!")End If
<>不平等:"この例は、変数内のテキストが、指定した別のテキストと等しいかどうかを確認する方法を示しています。Dimstroka As String =" Hello NubClub! "" strokaが二重引用符で囲まれたテキストと等しくない場合は、表示してください。 MsgBox If stroka<>"私は初心者プログラマーです" Then MsgBox( "stroka変数のテキストは引用符で囲まれたテキストと等しくありません!")End If
< Меньше:「例は、2つの数値を比較する方法を示しています。Dimchislo1As Integer = 10 Dim chislo2 As Integer = 5」chislo2がchislo1より小さい場合は、MsgBox Ifchislo2を表示します。< chislo1 Then MsgBox("Значение переменной chislo2 меньше значения переменной chislo1") End If
>詳細:"例は、2つの数値を比較する方法を示していますDim chislo1 As Integer = 10 Dim chislo2 As Integer = 5" chislo1がchislo2より大きい場合、MsgBoxを表示しますIf chislo1> chislo2 Then MsgBox( "変数chislo1の値がより大きい変数chislo2の値 ")End If
<= Меньше или равно:"例は、2つの数値を比較する方法を示しています。Dimchislo1As Integer = 10 Dim chislo2 As Integer = 5" chislo2がchislo1以下の場合、MsgBox Ifchislo2を表示します。<= chislo1 Then MsgBox("Значение переменной chislo2 меньше или равно значению переменной chislo1") End If
> =以上:"例は、2つの数値を比較する方法を示しています。Dimchislo1As Integer = 10 Dim chislo2 As Integer = 5" chislo1がchislo2以上の場合、MsgBoxを表示します。Ifchislo1> = chislo2 Then MsgBox( "変数の値chislo1が変数chislo2の値以上である ")End If
If ... Then ... Elseステートメント-分岐
上記はかなりされています 簡単な例 If ... Then条件を使用します。つまり、 分岐も他もありません。
ここで、分岐のあるいくつかの例を見てみましょう。それらはもう少し複雑ですが、それらなしではどこにも行けません。
本質的に、Elseを使用すると、すべての例は上記と同じままになり、プログラムの小さな分岐のみが追加されます。
何が追加されますか?
以前のMsgBoxが条件が真の場合にのみ表示された場合、Elseを使用すると、条件が真でない場合でもMsgBoxを呼び出すことができます。
そして、例。
"例は、変数内のテキストが指定した別のテキストと等しいかどうかを確認する方法を示しています。DimstrokaAs String =" Hello NubClub! "" strokaが二重引用符で囲まれたテキストと等しい場合は、表示してくださいテキスト付きのMsgBox-変数は探しているテキストと同じです! "strokaが二重引用符で囲まれたテキストと等しくない場合は、テキスト付きのMsgBoxを表示してください-変数は探しているテキストと等しくありません!if stroka =" Hello NubClub! "Then MsgBox("変数は等しい探しているテキスト! ")Else MsgBox("変数が探しているテキストと等しくありません! ")End If
1つの変数と複数の値があり、テキストをチェックする必要がある場合があります。 それではどうしますか? ズボンを脱いで走る?!
いいえ、これは私たちの方法ではありません
よりエレガントな解決策があります。 ElseIfを使用して条件を複雑にすることができるため、もちろん、妥当な範囲内で、必要な数の行をチェックできます。 行が多い場合は、ループが助けになります。これを使用して、次のレッスンで作業します。
例を見てみましょう。
街路信号機を機能させて色を表示するには、信号機のロジックを作成する必要があると想像してみましょう。
どうやってするの?
例として、実際には難しくありません。
基本的なVBA制御構造:
If Then Else "End If Control Statement
このステートメントは、特定の条件(または一連の条件)をチェックした結果に応じて、ステートメントの実行順序を変更します。
例:
サブTestIfThen()
iData = "pashulka"
iData = "Excel"の場合
MsgBox「このメッセージは表示されません!!!」
ElseIf iData = "Office" Then
MsgBox「残念ながら、このメッセージも表示されません!!!」
そうしないと
MsgBox「このメッセージはとにかく表示されます」、iData
終了する場合
コメント:
もしも - キーワード、チェックの開始を示します
iData-値がチェックされる変数
それで-チェックの終了を示すキーワード
MsgBox- メッセージ
ElseIf-新しいチェックの開始を意味するキーワード
それで-追加チェックの終了を示すキーワード
MsgBox- メッセージ
そうしないと-チェックの肯定的な結果で実行された命令のブロックの終わり、および否定的な結果で実行された命令のブロックの始まりを示すキーワード。
MsgBox- メッセージ
終了する場合
If Then Else "End Ifステートメントでは、キーワード ElseIfと そうしないとオプションです。
次の制御ステートメントの場合
この命令により、特定のアクションを必要な回数実行できます。 これらの命令は一般にループと呼ばれます。
例:
サブTestForNext()
iCount = 1から100の場合ステップ2
i = i + 1
次
コメント:
にとって
iCount-サイクルの繰り返し回数を決定する変数。
1
-カウンターの初期値
に-カウンターの開始値と終了値を区切るキーワード
100
-カウンターの最終値
ステップ-カウンターのステップを定義するキーワード
2
-カウンターステップ(数)
次-キーワード。これに達すると、カウンター値がステップサイズによって変化し、その後、コントロールは再びサイクルの最初に移動します。
MsgBox
For Nextステートメントで、キーワード ステップオプションです。 存在しない場合、カウンターのステップは1に等しくなります。
重要カウンターステップは数値でなければなりません。 カウンタのステップが負の数として指定されている場合、カウンタの値はサイクルごとに減少します。
例、カウントダウンあり:
サブTestForNext2()
iCount = 300 To1ステップ-3の場合
i = i + 1
iCount = 153の場合、終了します
次のiCount
MsgBox "繰り返し回数:"&i
注意を払う:
もしも iCount = 153 それで-このVBAコードでは、既知のIf ThenElseステートメントを適用しています。
終了
次のiCount-コードには、キーワードの後にある変数(カウンター)が含まれています。 この構文は通常、 視覚的定義 VBAコードにそのような命令が十分にある場合は、ループを終了します。
ウェンドコントロールステートメント中
この命令により、特定の条件が満たされている限り、特定のアクションを実行できます。
例:
サブTestWhileWend()
iCount iCount = iCount +1の間
ヴェンド
コメント:
その間-サイクルの始まりを意味するキーワード
iCount-この命令が実行される条件
ヴェンド
MsgBox-繰り返し回数に関するメッセージ
Do Loop Control Instruction
この命令を使用すると、指定された条件が満たされている間だけでなく、指定された条件が満たされるまでのほとんどの時間、特定のアクションを実行できます。
例:
サブTestDoLoop()
iCount> = 100になるまで実行します
iCount = iCount + 1
ループ
MsgBox "繰り返し回数:"&iCount
コメント:
行う-サイクルの始まりを意味するキーワード
それまで-条件の存在を示すキーワード
iCount> = 100-この命令が実行される条件
ループ-サイクルの終わりを意味するキーワード
MsgBox-繰り返し回数に関するメッセージ
サブTestDoLoop2()
行う
iCount = iCount + 1
iCount = 50の場合、Doを終了します
iCount = 100になるまでループする
MsgBox "繰り返し回数:"&iCount
注意を払う:
もしも iCount = 50 それで-このVBAコードでは、既知のIf ThenElseステートメントを再度適用しました。
終了する-サイクルの早期終了を意味する命令
iCount = 100-この命令が実行される条件
ノート:
ループの最後に指定された条件は、少なくとも1回は実行されることを保証します。 条件が正しく設定されていないと、ほぼ永久的なモバイルを取得できるため、Wend、DoLoopの手順に注意してください。
Select Case "End Select Control Statement
このステートメントは、変数または式の値の結果に応じて、いくつかのコードの1つを実行します。
例:
サブTestSelectCase()
CaseiNumericを選択します
ケース1
ケース2、5
MsgBox「このメッセージは表示されないはずです」
ケース10から13
MsgBox「このメッセージは表示されないはずです」
ケースは> 14です
MsgBox「これはあなたが見るべきメッセージです」
その他の場合
MsgBox "このメッセージは、変数がEndSelectの場合に表示されます
コメント:
ケースを選択
iNumeric-変数または式。その値によって、実行するVBAコードのフラグメントの選択が決まります。
ケース1-比較される値の最初のバリアント。
変数の値がそれに一致する場合、Caseに続くコードフラグメントが実行されますが、次のキーCaseの前に、ステートメントはその作業を完了します。 それ以外の場合、チェックは続行されます。
ケース2、5-意味の2番目の変形。
ケース10から13-意味の3番目の変形。
ケースは> 14です-意味の4番目の変形。
MsgBox-この場合に表示されるメッセージ
その他の場合-前のオプションのいずれも一致しなかった場合のコード実行を示すキーワード。
選択を終了-命令の終わりを示すキーワード
SelectCaseステートメント「EndSelect」で、キーワード その他の場合オプションです。
次の制御ステートメントごとに
この命令を使用すると、ファミリまたは配列要素の各オブジェクトで特定のアクションを実行できます。
Rangeオブジェクトの例:
サブTestForEachNextRange()
i = i + 1
iCell.Value = "(!LANG:セル#" & i
!}
次
MsgBox "セル数:"&i
コメント:
それぞれについて-命令の開始を示すキーワード
iCell-グループ(配列またはファミリ)の要素の値が割り当てられる変数。配列の要素を操作するには、変数がVariant型である必要があります。
の-変数をグループから分離するキーワード
範囲( "A1:C5")-グループ、つまり オブジェクトの配列またはファミリ。ループの反復回数は、グループに含まれる要素の数によって異なります。ループの最初の実行時に、変数にはグループの最初の要素の値が割り当てられ、次に変数に値が割り当てられます。 、後続のすべてのものの。
次-キーワード。到達すると、コントロールは再びサイクルの最初に移動します。
MsgBox-グループ内の要素の数に関するメッセージ。
この場合、Rangeオブジェクト内のセル数のこのようなカウントを使用することはできません 一番いい方法、このオブジェクトにはこのタスクをはるかにうまく処理するプロパティがあるため:Rangeオブジェクト:そのプロパティとメソッド
Rangeオブジェクトを操作する例:
サブTestForEachNextRangeChanges()
範囲内の各iCell( "A1:C5")
i = i + 1:iCell.Value = i
If iCell.Value 5 Then
iCell.Font.Size = 15
iCell.Interior.ColorIndex = 50
ElseIf iCell.Value = 13またはiCell.Value = 5 Then
iCell.Font.Size = 20
iCell.Interior.ColorIndex = 3
そうしないと
iCell.Clear
終了する場合
注意を払う:
-このVBAコードでは、セル内の値を確認するために、既知のIf ThenElseステートメントを適用しました。
-チェックに合格した条件に応じて、Rangeオブジェクトのさまざまなプロパティを使用する特定のコードが実行されます。
WorkSheetsファミリの例:
サブTestForEachNextSheet()
ワークシートの各iListについて
i = i + 1
iNameList = iNameList&Chr(10)&iList.Name
次
MsgBox "ワークシートの数:"&i&Chr(10)&_
「ワークシート名:」&iNameList
この場合、このようなワークシート数のカウントを使用することは最善の方法ではありません。このオブジェクトには、このタスクをはるかにうまく処理するプロパティもあるためです。
条件は、確立された基準に応じてアクションを実行できるため、プログラミングで非常に役立ちます(同じ原則が もしも Excel関数)。
条件を設定する最も重要な機能は もしもそして今、それがどのように機能するかを見ていきます:
If [CONDITION HERE] Then "=> IF条件が真の場合、THEN"命令if "true" Else "=> OTHERWISE"命令if "false" End If
練習に取り掛かり、変数チュートリアルで使用した例に戻りましょう。 この手順の目的は、セルで指定された文字列の値を含むダイアログボックスを開くことでした。 F5:
セルに文字を入力した場合 F5、これはエラーになります。 これを防ぎたいのです。
サブ変数() "変数の宣言Dimlast_name As String、first_name As String、age As Integer、row_number AsInteger"変数への値の割り当てrow_number = Range( "F5")+ 1 last_name = Cells(row_number、1)first_name = Cells(row_number、2)age = Cells(row_number、3) "MsgBox dialog last_name&" "&first_name&"、 "&age&" years "End Sub
入力した値がセルにあるかどうかを確認する条件を追加しましょう F5コードが実行される前の数値。
関数を使用します IsNumeric状態を確認するには:
サブ変数()「括弧内の値(セルF5)が数値の場合(これはIF条件が正しい)の場合」は、次の手順に従います。IfIsNumeric(Range( "F5"))Then "変数の宣言Dimlast_name As String、first_name As String、age As Integer、row_number As Integer "変数への値の割り当てrow_number = Range(" F5 ")+ 1 last_name = Cells(row_number、1)first_name = Cells(row_number、2)age = Cells( row_number、3) "MsgBoxダイアログボックスlast_name&" "&first_name&"、 "&age&" years "End If End Sub
設定した条件が満たされない場合も、指示を書く必要があります。
サブ変数()If IsNumeric(Range( "F5"))Then "条件が満たされた場合"変数の宣言Dimlast_name As String、first_name As String、age As Integer、row_number AsInteger "変数への値の割り当てrow_number = Range ( "F5")+ 1 last_name = Cells(row_number、1)first_name = Cells(row_number、2)age = Cells(row_number、3) "MsgBox dialog last_name&" "&first_name&"、 "&age&" years " Else "条件が実行されない場合" Dialog Box:Warning MsgBox "入力された値"&Range( "F5")& "は無効です!" "セルF5範囲の内容を削除しています(" F5 ")。ClearContentsEndIf End Sub
これで、数値以外の値で問題が発生することはありません。
16行のデータを含む配列を使用して、次のステップは、変数row_numberが「2以上」および「17以下」であるかどうかを確認することです。
しかし、最初に、比較演算子を見てみましょう。
およびこれらの便利な演算子:
次に、上記の条件の1つを追加しましょう と比較演算子間:
サブ変数()If IsNumeric(Range( "F5"))Then "If数値Dimlast_name As String、first_name As String、age As Integer、row_number As Integer row_number = Range(" F5 ")+ 1 If row_number> = 2そしてrow_number
マクロをより実用的にしたい場合は、置き換えることができます 17 行数を含む変数に。 これにより、毎回この制限を変更することなく、配列に行を追加したり、配列から行を削除したりできます。
これを行うには、変数を作成する必要があります nb_rowsこの関数を追加します。
この場合、関数を使用します WorksheetFunction.CountA、これは関数に類似しています COUNTA Excel自体で。
この関数で、結果の値を変数に書き込むことにより、最初の列の空でないセルの数をカウントする必要があります nb_rows:
サブ変数()If IsNumeric(Range( "F5"))Then "IF NUMBER Dim last_name As String、first_name As String、age As Integer、row_number As Integer Dim nb_rows As Integer row_number = Range(" F5 ")+ 1 nb_rows = WorksheetFunction.CountA(Range( "A:A")) "row_number> = 2かつrow_numberの場合に行数をカウントする関数
ElseIf
ElseIf IFコマンドの後に条件を追加することができます。
If [CONDITION 1] Then "=> IF条件1が真の場合、THEN"ステートメント1 ElseIf [CONDITION 2] Then "=> IF条件1が偽であるが、条件2が真の場合、THEN"ステートメント2Else "=> ELSE"ステートメント3End If
もしも 条件1実行された、 命令1実行され、オペレーターを離れます もしも(で始まる もしもそしてEndIfで終わります)。 もしも 条件2「」という意味を持ちます 嘘をつく "、その後実行されます 指示2、そしてそれが順番に「 嘘をつく "、 それから 指示3(下 そうしないと)が実行されます。
Sub score_comment() "Variables Dim note As Integer、score_comment As String note = Range(" A1 ")"受け取ったスコアに基づくコメントIf note = 6 Then score_comment = "Great score!" ElseIf note = 5 Then score_comment = "Good score" ElseIf note = 4 Then score_comment = "Satisfactory score" ElseIf note = 3 Then score_comment = "Unsatisfactory score" ElseIf note = 2 Then score_comment = "Bad score" ElseIf note = 1 Then score_comment = "ひどいスコア" Else score_comment = "ゼロスコア" End If "セル内のコメントB1範囲(" B1 ")= score_comment End Sub
選択する
使用する代わりの方法があります もしも多くは ElseIf命令、すなわちコマンド 選択するこれは、この種の状況により適しています。
演算子を使用したマクロの例を考えてみましょう 選択する:
Sub score_comment() "Variables Dim note As Integer、score_comment As String note = Range(" A1 ")"受け取ったスコアに基づくコメントSelect Case note "
他の比較演算子も使用できたことは注目に値します。
ケースは> = 6 "値> = 6の場合
異なる意味を持つ例:
ケースは= 6、7 "値= 6または7の場合ケースは6、7"値が6または7でない場合ケース6から10 "値= 6から10までの任意の数
基本的なVBA演算子
コメント(0)
3.1。 オペレーターの記録ルール
オペレーターを録音するときは、次のルールに従う必要があります。
新しいステートメントはそれぞれ、新しい行に書き込まれます。
1行に複数の演算子を書き込むには、コロン(:)で区切ります。
演算子が1行に収まらない場合は、行末にスペースと下線(_)を入れてから、次の行に収まらない部分を続行する必要があります。
3.2。 代入演算子
代入演算子は、変数に新しい値を割り当てる必要がある場合に使用されます。 構文は次のとおりです。
変数名= 表現
右側の式が最初に評価され、次に結果が左側の変数に割り当てられます。
例えば..。 代入演算子を使用して、次の数式を記述します。
VBAでは、この式は次の演算子として記述できます。
Y = a ^(1/3)+(a ^ 2 + Exp(-b))/(Sin(a)^ 2-Log(b))
3 .3。 I / O演算子
3 .3.1. MsgBoxの演算子と関数
オペレーター MsgBoxダイアログボックスに情報出力を行い、ユーザーがボタンを押すまでの待機モードを設定します。
構文は次のとおりです。
MsgBox メッセージ[、ボタン] [、タイトル]
引数:
メッセージ -ウィンドウに表示される情報メッセージを指定する必須の引数。 記号で連結された複数のテキスト行で構成できます & ..。 この引数での使用法 Chr(13)情報を表示するときに新しい行につながります。
ボタン -この引数の値は、ウィンドウに表示されるボタンのカテゴリを決定します。 ボタンの引数の値によって、ウィンドウにアイコンが表示されるかどうかも決まります。 メッセージウィンドウに表示するボタンを指定しない場合は、[OK]ボタンに対応するデフォルト値が使用されます。 テーブル 3.1は、メッセージウィンドウのボタンとアイコンの可能な組み合わせを示しています。
見出し -ウィンドウのタイトルを設定します。
関数 MsgBoxダイアログボックスでクリックされたボタンを示す整数を返します。
表3.1。 ボタン変数の有効な値
画面 |
口論 |
OKボタン |
|
[OK]ボタンと[キャンセル]ボタン |
|
はいおよびいいえボタン |
|
はい、いいえ、キャンセルボタン |
|
[停止]、[やり直し]、[無視]ボタン |
VbAbortRetryIgnore |
[やり直し]ボタンと[キャンセル]ボタン。 |
|
案内標識 |
|
疑問符 |
|
エクスクラメーション・マーク |
例えば..。 現在の日付に関するメッセージを表示します。
MsgBox「今日はカレンダーにあります」&日付、「注意」
その結果、以下のウィンドウが表示されます(図3.1)。
[OK]ボタンをクリックすると、メッセージボックスが閉じ、プログラムはMsgBoxの呼び出しの直後のステートメントから実行を再開します。
3.3.2. 関数 InputBox
関数 InputBox入力ウィンドウを使用して変数の値を入力し、次の構文を使用します:
VariableName = InputBox(メッセージ[、タイトル] )
引数:
メッセージ -必須の引数。 ウィンドウに情報メッセージを設定し、通常は入力された値の意味を説明します
見出し -ウィンドウのタイトルを設定します。
例えば、キーボードから変数Nの値を入力します。デフォルト値は10です。
これを行うには、次の演算子を使用できます。
N = InputBox( "Enter N"、 "初期データの入力"、10)
その結果、変数Nの値を入力するための次のウィンドウが表示されます(図3.2)。
デフォルト値がユーザーに適している場合は、[OK]ボタンをクリックすると、入力ウィンドウが閉じ、変数Nに値10が割り当てられ、呼び出しの直後にオペレーターからプログラムの実行が再開されます。 InputBox.
デフォルト値がユーザーに合わない場合は、[OK]ボタンをクリックする前に、次のように入力する必要があります。 希望値変数N。
3 .4。 条件付きIFステートメント
VBAで分岐計算プロセスを実装するには、演算子 もし…それなら…そうでなければ、これは、条件チェックの最も単純な形式です。 構文は次のとおりです。
もしも調子それでOPERATOR_1ElseOPERATOR_2
OPERATOR_1次の場合に実行されます 調子 true、それ以外の場合は実行 OPERATOR_2. この場合、If…Then…Elseステートメントは1行で記述されます。
調子ブール式です。 式の結果は常にブール値です。 式は単純なものでも複雑なものでもかまいません。 単純な条件を記述する場合、表1に示されている関係のすべての可能な操作を使用できます。 3.2。
テーブル3 .2。 論理関係
手術 |
名前 |
表現 |
結果 |
AがBと等しい場合はTrue |
|||
AがBと等しくない場合はTrue |
|||
AがBより大きい場合はTrue |
|||
AがB未満の場合はTrue |
|||
多かれ少なかれ |
AがB以上の場合はTrue |
||
以下 |
AがB以下の場合はTrue |
複雑な条件は、論理演算と括弧を使用して単純な条件から形成されます。 論理演算のリストを表に示します。 3.3。
テーブル3 .3。 論理演算
名前 |
表現 |
結果 |
|||
論理的 |
|||||
論理積 |
|||||
論理OR |
条件付きステートメントでは、ステートメントの代わりにステートメントブロックを使用できます。 この場合、条件演算子は次のようになります。
もしも調子それで
OPERATOR_BLOCK_1
OPERATOR_BLOCK_2
終了INS
条件文では、いくつかの条件を確認できます。 この場合、条件演算子は次のようになります。
もしもCONDITION_1それで
OPERATOR_BLOCK_1
ElseIfCONDITION_2それで
OPERATOR_BLOCK_2
そうしないと
終わりもしも
例1..。 図のアルゴリズムのプログラムの一部を記述します。 3.3。
例2。図のアルゴリズムのプログラムの一部を記述します。 3.4。
3.5. Caseステートメントを選択します
Select Caseステートメントは、有効な値の有限セットを持つ式の値に応じて、さまざまなアクションを実行する必要がある場合に便利です。 条件文も参照しますが、形式が異なります。
ケースを選択TESTED_EXPRESSION
場合VALUES_1
OPERATORS_1
場合値_ 2
オペレーター_ 2
. . .
場合VALUES_N
オペレーター_NS
[ 場合そうしないと
それ以外は_ オペレーター]
選択を終了
TESTED_EXPRESSION実数以外の任意のスカラー型にすることができます。 値カンマで区切られた任意の数の値または範囲で構成されます。
の種類 値タイプと一致する必要があります TESTED_EXPRESSION.
まず、計算します TESTED_EXPRESSION..。 その値が値の1つと一致する場合 VALUES_I、 それから OPERATORS_I 選択を終了..。 その値がどの値とも一致しない場合 VALUES_I、 それから OTHERWISE_OPERATORS制御は後に立っているオペレーターに移されます 選択を終了
例えば。図のアルゴリズムのプログラムの一部を記述します。 3.5、変数nの値に応じて変数Sの値を決定します。
3.6。 ループ演算子
循環計算プロセス、つまり1つ以上の演算子の複数の実行を実装するには、ループ演算子を使用します のために…次へこれは次の構文を持っています:
にとってCOUNTER = START_VALUENSoCON_VALUEステップステップ
オペレーターブロック
オペレーターブロック
次カウンター
For ... Nextループは、変数の値を繰り返し処理します カウンター、は、指定された変更ステップでの開始値から終了値までのサイクルのパラメーターです。 これにより、ループ本体のステートメントのブロックが、カウンターの新しい値ごとに実行されるようになります。 もしも ステップステップ構造にがない場合、デフォルトではステップは1であると想定されます。オペレーターによると 終了前にループステートメントを終了することが可能です カウンター最後の値に達します。*
範囲や配列要素のセルなど、類似したオブジェクトのグループのオブジェクトを反復処理するには、ループ演算子を使用すると便利です。 にとって ...それぞれ…次へ.
それぞれについてエレメントのグループ
ブロック_ オペレーター
オペレーターブロック
次エレメント
VBAでは、他のループ演算子を使用して、所定の繰り返し回数でループを編成します。
前提条件のあるループ- 行うその間 … ループ,
行うそれまで … ループ;
事後条件付きのループ - 行う … ループその間,
行う … ループそれまで.
これらのループステートメントの構文は次のとおりです。
「前提条件でループする行う その間 … ループ
一方を行います調子
オペレーターブロック
オペレーターブロック
「前提条件でループする行う それまで … ループ
行うそれまで調子
オペレーターブロック
オペレーターブロック
「事後条件付きループ行う … whileループ
ブロック_ オペレーター
オペレーターブロック
whileループ調子
「事後条件付きループ行う … までループする
ブロック_ オペレーター
オペレーターブロック
までループする調子
オペレーター 行うWhile ...ループ限り、ステートメントのブロックの複数の繰り返しを提供します 調子尊重され、オペレーター
その他のニュース
条件演算子の使用は、ほとんどすべてのプログラミング言語の不可欠な部分です。 そして実際、プログラミング言語はさまざまな問題を解決するための手段として最初に形成されたので、実際にはすべてが数学から来ています。 この記事は退屈で面白くないとすぐに言います。プログラミング、特に演算子の説明から新しいものを絞り出すことは物理的に不可能なので、何かを思いつきます。 そのため、VBA言語では、ifステートメントを使用して条件をテストします。条件はいくつかのバリエーションで存在する可能性があります。 しかし、最初に、少しユーモア…。
うさぎが森の中を走っていて、クマが本を読んでいるのが見えます。 うさぎは尋ねます:「内反足、あなたは何を読んでいますか?」 巧妙な表情の彼は答えます:「論理」。 驚いた表情の斜めは「論理とは何か」と問いかけます。 「まあ、見てください」とクマは言います。
- M:マッチするものはありますか?
- Z:いいえ
- M:だからあなたは喫煙しません
- Z:はい!
- M:煙草を吸わなければ、お金の無駄はありません
- Z:そうです!
- M:それで、あなたは女の子の周りを歩きますか?
- Z:もちろんです!
- M:そして、あなたは女の子の周りを歩いているので、あなたは無力ではありません!
- Z:もう一度!
うさぎはそのような賢い本に喜んで、内反足にそれを読むように頼みました。 彼は満足して森の中を歩き、喜び、そしてオオカミが彼に向かってくる。 うさぎは灰色で論理を試すことに決め、彼に尋ねます:
- Z:一致するものはありますか?
- Q:はい
- Z:それであなたは無力です!
ええ、そうです、彼は覚えているように逸話を再び語りました
さて、理論に取り掛かりましょう...
オプション1..。 VBAを使用する最も簡単な方法は、条件ステートメントが条件をチェックするときであり、条件が満たされると、次の1つの式が実行されます。
条件の場合、式
オプション2..。 条件を確認した後、複数の式を実行する必要がある場合があります。その場合、ifステートメントは次の形式になります。
条件があれば
式1
式2
式N
ご覧のとおり、この場合、ブロックが使用されている場合は、終了する場合は終了しますが、ステートメントがネストされている場合にも関連します。
オプション3:ネストされた作成を回避するため 条件文、次の構造が使用されます。
条件があれば
式1
式2
ここではすべてが非常に単純です。条件が真の場合は最初の式が実行され、そうでない場合は2番目の式が実行されます。 条件を確認した後、上記のバリアントのように、複数の演算子をたどることができることを覚えておく価値があります。
オプション4:複数の条件の確認:
条件1の場合
式1
ElseIf条件2の場合
式2
ElseIf条件3の場合
式3
作業のロジックは次のとおりです。最初に最初の条件がチェックされ、それがtrueの場合、最初の式が実行されてから、EndIfに続く演算子への遷移が発生します。 最初の条件が満たされない場合、2番目の条件がチェックされるなど、最後のElse式の使用はオプションであり、前の条件のいずれも満たされない場合に実行する必要があるステートメントを続けることができます。
では、VBA ifthen構文を使用する簡単な例を書いてみましょう。 Visual Basic for Applicationsエディターでフォームを作成し、その表面に3つのテキストラベル()と1つのボタン()を追加します。 コードエディタで、次のように記述します。
Private Sub GetSub()Dim MySumm As Integer Dim MyVar As Byte MyVar = 0 Do While MySumm<= 10000 MySumm = MySumm + 1 If MySumm = 10 Then Label1.Caption = 「金額が10に達しました」 ElseIf MySumm = 100 Then Label2.Caption = 「金額が100に達しました」 ElseIf MySumm = 1000 Then Label3.Caption = 「金額が1000に達しました」それ以外の場合Label4.Caption = 到達した価値&MySumm End If Loop End Sub Private Sub CommandButton1_Click()Call GetSub End Sub Private Sub UserForm_Initialize()Label1.Caption = "" Label1.FontSize = 13 Label1.ForeColor = vbRed Label2.Caption = "" Label2.FontSize = 13Label2。 ForeColor = vbGreen Label3.Caption = "" Label3.FontSize = 13 Label3.ForeColor = vbBlue Label4.Caption = "" Label4.FontSize = 13 CommandButton1.Caption = "Execute" End Sub |
GetSubプロシージャでは、ループが使用されます。ループを実行するための条件は、MySumm変数の値が10000以下である必要があることです。ループ自体の本体では、VBA ifthenステートメントにいくつかのオプションがあります。中古。 条件がチェックされます。合計が値10に達した場合、最初のテキストフィールドに1つの情報を書き込み、100の場合は他の情報、1000の場合は3番目の情報、それ以外の場合は4番目のテキストのCaptionプロパティにデータを書き込みます。分野。