●質問の主旨
INT関数及びRND関数を使い、「0から9」までの
数値をランダムに発生させるのではなく、「1から9」
までの数値をランダムに発生させるには、下記のコードを
どのように書き換えれば良いでしょうか?
●質問の補足
下記コード及び画像のように九九の計算問題を
作成したいと思っています。今のコードでは
「0から9」までの数値が発生するのは、分かっていたので
If ThenステートメントやSelect Caseステートメントを
使って、0の数値が発生するときは「1」とみなすというような
記述もしてみましたが、上手くいきませんでした。
ご存知のかたよろしくお願いします。
なお使用機種はWindowsVista、Excel2007を使用しています。
私はVBAをはじめて3カ月程度です。
●コード
Option Explicit
Const ORG_RW As Integer = 4 '問題の開始行
Const DST_RW As Integer = 8 '問題の終了行
Const NUM1_CLM As Integer = 1 '問題の数値1の列
Const NUM2_CLM As Integer = 3 '問題の数値2の列
Const ANSW_CLM As Integer = 5 '問題の解答の列
Private Sub CommandButton1_Click() 'Checkボタン
Dim i As Integer 'カウンタ変数
For i = ORG_RW To DST_RW'問題の開始行から問題の終了行まで
If Cells(i, NUM1_CLM).Value * Cells(i, NUM2_CLM).Value = Cells(i, ANSW_CLM).Value Then
Cells(i, ANSW_CLM).Font.Color = vbBlue '問題が正解のときは文字が青色
Else
Cells(i, ANSW_CLM).Font.Color = vbRed '問題が正解のときは文字が赤色
End If
Next i
End Sub
Private Sub CommandButton2_Click() 'Resetボタン
Dim i As Integer 'カウンタ変数
For i = ORG_RW To DST_RW Cells(i, ANSW_CLM).ClearContents '解答が消去される
Cells(i, ANSW_CLM).Font.Color = vbBlack '解答が消去されたときは文字が黒色
' 解答が消去されたときは0~9までのランダムな数値が発生
Cells(i, NUM1_CLM).Value = Int(Rnd * 10)
'解答が消去されたときは0~9までのランダムな数値が発生
Cells(i, NUM2_CLM).Value = Int(Rnd * 10)
Next i
End Sub
No.3
- 回答日時:
標題とか質問文の速いうちにワークシート関数の質問かVBAの質問か明記すべきです。
ワークシート関数デモできると思うがVBAの問題にしているのだね。
ーー
関数の本には、乱数を発生させる領域を指定したいときは
RAND()x(上限ー下限)+下限という解説が有る。
しかし乱数は同じ値が出てくることを排除するものでない。1桁で10個の数字でも同じ数字が出てくるだろう。
だから2桁も数字でも発生させて、それを並べ替えし行番号でもとるのはどうだろう。
Sub test01()
For i = 1 To 9
Cells(i, "G") = i '行番号的数字
Cells(i, "H") = Int(100 * Rnd()) '2桁乱数
Next i
'---H列で並べ替え マクロの記録などから
Range("G1:H9").Sort Key1:=Range("H1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
'---B2からB11にG列の数字を取って1桁数をセット
For i = 2 To 11
Cells(i, "B") = Cells(i - 1, "G")
Next i
End Sub
ーーーー
上記は被乗数で、乗数に付いても同じ(略)。
正解かどうかの判定は別問題という事で略。
imogasi様
ご回答ありがとうございます。
>標題とか質問文の速いうちにワークシート関数の質問かVBAの質問か明記すべきです。
おっしゃるとおりですね。
関数については標題か質問文の冒頭でワークシート関数が
VBA関数であるか、明記するようにします。
また記述してくださったコードにつきましては
後の参考とさせていただきます。
No.2
- 回答日時:
以下の関数があります。
使い方はhelpで見てください。RAND
RANDBETWEEN
セルに以下を貼り付けします。
=INT(9 * RAND() + 1)
乱数は初期値が決まってしまいますので、年月日や時間の値を組み合わせて初期化する工夫をします。
私がよくやる方法は
10をパイ(3.141592654)で割って1から10までの乱数ができますよね。
10/3.141592654=3.183098862
1の位の数字の3を取って10倍してから10から割ります。
10/((3.183098862-int(3.183098862))*10)
これを繰り返します。
初期値の修正は上記の方法で1から10までの値を作りました。
LHS07様
ご回答ありがとうございます。
最初にワークシート関数ではなく、
VBA関数の質問であることを
書いておけばよかったです。誠に恐縮です。
しかし本件質問について、INT関数とRAND関数の
使い方に関してはワークシートでも同じであることが
分かりました。
初期化する工夫については後の参考とさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
1から9までの乱数
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【Excel VBA】 B列に特定の文字...
-
VBAのFind関数で結合セルを検索...
-
IIF関数の使い方
-
URLのリンク切れをマクロを使っ...
-
VBAを用いて条件付きの平均値、...
-
VBAを使って検索したセルをコピ...
-
【VBA】2つのシートの値を比較...
-
targetをA列のセルに限定するに...
-
VBA 何かしら文字が入っていたら
-
マクロについて。S列の途中から...
-
rowsとcolsの意味
-
エクセルVBA intersect colu...
-
■VBAで条件による行挿入方法
-
VBマクロ 色の付いたセルを...
-
エクセルVBA シートモジュール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【Excel VBA】 B列に特定の文字...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
【VBA】2つのシートの値を比較...
-
Changeイベントでの複数セルの...
-
VBAを使って検索したセルをコピ...
-
VBA 何かしら文字が入っていたら
-
エクセルVBA intersect colu...
-
VBAでのリスト不一致抽出について
-
マクロ 最終列をコピーして最終...
-
VBAコンボボックスで選択した値...
-
複数の列の値を結合して別の列...
おすすめ情報