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

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

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

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

Q&A

3回答

3293閲覧

VBA 作成した乱数をIf文で使う方法

VBAsyosinsya

総合スコア9

VBA

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

0グッド

0クリップ

投稿2017/06/26 14:05

上で作成した、1~10の数字の乱数を、下のif文に当てはめるにはどのようなコードを書けばよいのでしょうか?
今は8という数字が入っていて、当たりも8が設定されているため、セル1の1には"当たり"と表示されるようになっています。
この"当たり"の数字を上で作成した乱数を使って毎回ランダムな数(1~10)になるようにするコードの書き方を教えてください。

VBA

1コード 2Dim random As String, i As Long 3 For i = 1 To 1 4 Randomize 5 random = random & Int(Rnd * 10) + 1 & " " 6 Next i 7 8Const Br As Long = 8 9 If Br = 8 Then 10 Cells(1, 1) = "当たり" 11 ElseIf 1 = Br Mod 2 Then 12 Cells(1, 2) = "奇数" 13 ElseIf 0 = Br Mod 2 Then 14 Cells(1, 3) = "偶数" 15End If

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

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

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

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

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

hatena19

2017/06/26 14:29

「毎回ランダムな数になる」の毎回とは、なにが毎回発生するのでしょうか。コマンドボタンのクリック時とか、ユーザーが入力した時とか、具体的に説明してください。
hatena19

2017/06/26 14:31

毎回発生するランダムな数と、何を比較するのでしょうか。ユーザーが入力した数ですか。もし、そうならユーザーはどこで入力するのでしょうか。これも具体的に説明してください。
VBAsyosinsya

2017/06/26 14:56

今は If Br = 8 Then となっているので 8 が当たりの数となっていますが、これを上で作った乱数のランダムな数に変更させたいです。比較する数はユーザーが入力した数で、こちらも現在は 8 が入っております
guest

回答3

0

良くわからないのですが、入力された値が乱数と一致かどうか、ですよね?
であれば、単純にこうなるんじゃないですかね?

VBA

1' 乱数を求める 2Dim random As Long 3Randomize 4random = Int(Rnd * 10) + 1 5 6' Brは入力された値が入っている変数と仮定 7Const Br As Long = 8 8 9' 判定 10If Br = random Then 11 Cells(1, 1) = "当たり" 12ElseIf 1 = Br Mod 2 Then 13 Cells(1, 2) = "奇数" 14ElseIf 0 = Br Mod 2 Then 15 Cells(1, 3) = "偶数" 16End If

そもそも乱数を文字列化しているのが良くわかりませんし、ループも1回だけですし。
的外れでしたらすみません。

投稿2017/06/26 23:53

ttyp03

総合スコア16998

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

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

0

hatena19様にコメント頂いたので、Excelで確認してみました。

10回乱数を作成し、それぞれで条件判定する方法はいかがでしょうか。

VBA

1Dim i As Long 2For i = 1 To 10 3 Dim random As String 4 Randomize 5 Dim Br As Long 6 Br = CLng(random & Int(Rnd * 10) + 1 & " ") 7 Debug.Print Br 8 9 If Br = 8 Then 10 Cells(1, 1) = "当たり" 11 ElseIf 1 = Br Mod 2 Then 12 Cells(1, 2) = "奇数" 13 ElseIf 0 = Br Mod 2 Then 14 Cells(1, 3) = "偶数" 15 End If 16Next i

投稿2017/06/26 15:33

maas

総合スコア18

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

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

jawa

2017/06/27 10:21 編集

横から失礼しますm(__)m 原文に沿っているのだと思いますが、random変数は結局何も機能していませんし、乱数をあえて文字列化してからCLngで数値に戻す意味もないように思います。 あとループ回数を10回に増やしたのなら出力行も変えてあげたないと結果がわからなそうですね。
guest

0

意図した内容と違っていたら申し訳ありません。
定数での宣言をやめて型変換するのはどうでしょうか。

VBA

1Dim random As String, i As Long 2 For i = 1 To 1 3 Randomize 4 random = random & Int(Rnd * 10) + 1 & " " 5 Next i 6 7Dim Br As Long 8Br = CLng(random) 9 10 If Br = 8 Then 11 Cells(1, 1) = "当たり" 12 ElseIf 1 = Br Mod 2 Then 13 Cells(1, 2) = "奇数" 14 ElseIf 0 = Br Mod 2 Then 15 Cells(1, 3) = "偶数" 16End If

投稿2017/06/26 14:18

maas

総合スコア18

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

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

hatena19

2017/06/26 14:37

Br = CLng(random) random には"3 4 9 1 6 3 4 3 9 10"というような文字列が入っているのでこのコードは型変換エラーになりませんか。
maas

2017/06/26 15:24

コメントありがとうございます。 おっしゃるとおりです、申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問