質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

460閲覧

条件分岐の復帰値について

Karaage_

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2019/09/03 05:55

前提・実現したいこと

下記の条件分岐(test1、test2)で、true or falseの判定を結果()に返してそこでtrueの場合の記述がわかりません。
(★の箇所)

test1がtrueだった場合したにいくので、
test2に行くのは理解しています。
結果()で復帰値で管理したいです。

該当のソースコード

VBA

1 2Option Explicit 3 4Sub 結果() 5 ★test1()がTrueを返したの場合は、test2()に遷移してさらにTrueを返したの場合は・・・  6End Sub 7 8 9 10Sub test1() 11 Dim intAge As Integer 12 intAge = InputBox("あなたの年齢を入力してください。") 13 14 If intAge > 19 Then 15 MsgBox "成人です。" 16 Else 17 MsgBox "未成年です。" 18 End If 19End Sub 20 21   22Sub test1() 23 Dim intAge As Integer 24 intAge = InputBox("あなたの年齢を入力してください。") 25 26 If intAge > 19 Then 27 MsgBox "成人です。" 28 Else 29 MsgBox "未成年です。" 30 End If 31End Sub 32 33 34Sub test2() 35 Dim intScore As Integer 36 intScore = InputBox("得点を入力してください") 37 38 If 79 < intScore And intScore <= 100 Then 39 MsgBox "優です" 40 ElseIf 69 < intScore And intScore < 80 Then 41 MsgBox "良です" 42 ElseIf 59 < intScore And intScore < 70 Then 43 MsgBox "可です" 44 ElseIf 0 < intScore And intScore < 60 Then 45 MsgBox "不可です" 46 Else 47 MsgBox "得点は 0~100の数字で入力してください" 48 End If 49 50End Sub 51 52

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nanami12

2019/09/03 06:11

フラグを立てて処理するだけでは? フラグを立てて入ったあとにはフラグを初期値にすればよいだけだと
tatsu99

2019/09/03 06:22

test1の場合、どのような状態ならtrueを返したいのですか? (例 intAge>19の場合、trueを返したい)・・・のように答えてください。 同様に、test2の場合、どのような状態ならtrueを返したいのですか?
guest

回答2

0

サブルーチン(Sub)は処理を行うだけで、結果を返しません。

結果を返す必要があるのであれば、サブルーチンではなく関数(Function)を使います。

『test1がtrueだった場合した(下)にいくので、
test2に行くのは理解しています。』
というのは、完全な誤解です。

まずは、ユーザー定義関数を作る のようなページでVBAの知識を習得しましょう。

投稿2019/09/03 06:12

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まずはやりたいことを、他人にも意味が通じる日本語にしてみましょう。
その説明では何がしたいのか伝わりません。
人間に伝わらないものを、より融通のきかないコンピューターに伝わるわけがないです。
例えば、
「年齢を確認して,成人なら、得点を入力してもらい、成績を表示する」というような日本語にしてみてください。

それが、できてから初めて、それを実現するためにどのようなコードが必要か調べましょう。

例えば、判定の結果を返すには、SubプロシージャではなくFunctionプロシージャにする必要があります。
Function とか ユーザー定義関数 あたりをキーワードに検索するといろいろ解説か見つかると思いますので、それで勉強して、コーディングしてみてください。

投稿2019/09/03 09:54

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問