• ベストアンサー

vbaの意味

vbaで Sub test() MsgBox Int((13 - 10 + 1) * Rnd + 10) End Sub これは、どういう意味でしょうか? 10-13までの数字の中で乱数を発生させるということでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

一定範囲内の乱数を出力する式は 乱数=Int((最大値 - 最小値 +1 ) * Rnd + 最小値) ですので、示された式は質問者さんの思われているとおりで正解ですね。

sdsuufxizhwbl
質問者

お礼

回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 乱数

    乱数を発生させる際に Sub Sample() Debug.Print Int((10 - 1 + 1) * Rnd + 1) End Sub で、1から10までの乱数を発生できますが、 1から10と言う連続した数字ではなく、 例えば10,13,18,43・・・ という規則性のない複数の数字からランダムに数字を発生させるにはどうすればいいでしょうか? 10,13,18,43の中から10を返したり、18を返したりする方法を教えてください。

  • 乱数 IFステートメント

    Debug.Print Int((11 - 8 + 1) * Rnd + 8) 「これって8~11までの乱数を発生させますよ」 という意味であってますか? そして、 Sub a() Dim 文字数 As Long 文字数 = Int((11 - 8 + 1) * Rnd + 8) If 8 >= 文字数 <= 10 Then MsgBox 文字数 & "は、8~10の間です" End If End Sub を実行すると、11でも MsgBox 文字数 & "は、8~10の間です" が表示されてしまいます。 「8~10の間なら」メッセージボックスを表示するには、 If 8 >= 文字数 <= 10 Then の部分をどうすればいいですか?

  • ただ、今日の日付を求めたいときはどちらのVBAコー

    VBA初心者のため教えてほしいのですが ただ、今日の日付を求めたいときはどちらのVBAコードを使えばいいですか? Sub test1() MsgBox DateValue(Date) End Sub Sub test2() MsgBox Date End Sub です。 ご教授よろしくお願いします。

  • VBA AからZで乱数を発生させたい

    Sub AからZで乱数を発生させる() Dim 最大値 As Integer Dim 最小値 As Integer Randomize 最小値 = 1 最大値 = 10 Debug.Print Int((最大値 - 最小値 + 1) * Rnd + 最小値) End Sub --------------------------------------------------------- これを実行すると、1から10の間で乱数を発生させられるのですが、 AからZの間で乱数を発生させたい場合は、 このコードをどのようにすればいいでしょうか? アドバイスよろしくお願いします。

  • [と”の意味を教えてください。

    http://okwave.jp/qa/q5945112.html を参考に、 Sub test1() Dim i As Integer i = 2 If i Like "[1-3]" Then MsgBox i & "です" End If End Sub Sub test2() Dim i As Integer i = 2 If i Like "[1-5]" Then MsgBox i & "です" End If End Sub Sub test3() Dim i As Integer i = 2 If i Like "[1-10]" Then MsgBox i & "です" End If End Sub を作ったのですが、 test3はうまく行きません。 意味としては、 iが "[1-10]"の中の数字の間のどれかであれば、 MsgBox i & "です" を表示させたいです。 でも上記のマクロを実行させた結果、 "[1-10]"の中で計算が行われてるのではないかと思います。 だから、test3は、1-10=-9 という事になり、msgboxが反応しないのではないかと思っています。 でもそうすると、test2だって "[1-5]"は、-4になって、i=2とは違う値なのに なぜMsgBoxが反応してしまうのかわかりません。 でもそもそも[と”の意味が分からないのでそこから教えていただけませんか? “の意味、は二つで挟んで文字列にすると思っています。

  • 【1】と【2】のvbaは同じ意味ですか?

    【1】 Option Explicit Sub test1() Call test2("aaa") End Sub Sub test2(MyStr As String) MsgBox MyStr End Sub 【2】 Option Explicit Dim MyStr As String Sub test1() MyStr = "aaa" Call test2 End Sub Sub test2() MsgBox MyStr End Sub 結果は同じですが、中身が違います。 今後コードを作っていく上で どちらの方式の方が良いのでしょうか?

  • 乱数の発生 Randomizeを入れた方が良いのか

    VBAについて教えてください。 --------------------------- Sub Randomizeを入れた場合() Dim intMax As Integer Dim intMin As Integer Randomize intMin = 1 intMax = 10 Debug.Print Int((intMax - intMin + 1) * Rnd + intMin) End Sub --------------------------- Sub Randomizeを入れていない場合() Dim intMax As Integer Dim intMin As Integer intMin = 1 intMax = 10 Debug.Print Int((intMax - intMin + 1) * Rnd + intMin) End Sub --------------------------- 上記二つのマクロを実行しても 同じような結果が得られる気がするのですがRandomizeは必要なのでしょうか? 一つのサブプロシージャーの中で1回しか乱数を発生させないのなら Randomizeを使って乱数を初期化する必要はないのですか?

  • VBAの乱数について質問

    乱数 x (0<x<1)を0.1刻みで発生させたいんですが うまくいきません。 プログラム例 Sub 一様乱数() Dim bin#(10) n = 1000 For m = 1 To 10 bin#(m) = 0 Next m For J = 1 To n x = Rnd(1) ix = Int(10 * Rnd(1)) bin#(ix) = bin#(ix) + 1 Next J Cells(4, 1) = " I" Cells(4, 2) = "Bin#(I)度数分布" For I = 0 To 10 Cells(I + 5, 1).Value = I Cells(I + 5, 2).Value = bin#(I) Next I End Sub ここで、9行目ix = Int(10 * Rnd(1))で0.1刻みになり 15行目のFor I = 0 To 10を0 to 1に変えればできると思ったんですが できませんでした。 どこが問題なのかヒントでもいいので教えてください。

  • Randomizeがある時とない時の違いがわからな

    vbaです Sub Sample1() Randomize Debug.Print Int((6 - 1 + 1) * Rnd + 1) End Sub Sub Sample2() Debug.Print Int((6 - 1 + 1) * Rnd + 1) End Sub の違いがわからないのですが、 Randomizeはどのような役割をなしてるのでしょうか? Sample1の結果は、 5 3 3 4 3 1 6 5 3 4 で、 Sample2の結果は、 4 5 4 3 4 1 4 1 6 1 5 5 でした。

  • エクセルVBAでこのプログラムの作るには

    最近エクセルVBAを勉強し始めた初心者です。 エクセル上でコマンドボタンを押すとF12~H12にそれぞれ0~9の数字を一定時間回転させF12、H12、G12の順(左、右、真ん中の順)に時間差で0~9の乱数を発生させ表示させるには(パチンコのリーチみたいな感じ?)どのようなプログラムを組めばよろしいでしょうか? 数字を回転させ乱数を表示させるプログラムは For = i = 0 To 100  Range("●●").Value = Int(Rnd * 10) Next i です。 よろしくお願いします。