ここから本文です

VisualBasicの問題なのですが解説お願いします。

ysk10530_0814さん

2018/1/910:17:58

VisualBasicの問題なのですが解説お願いします。

問21です。お願いします。

Visual Basic,gokei,tensu,1 to Ninzu,Sheet2.Active,retsu,解説

閲覧数:
29
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

lin_nyan36さん

2018/1/915:18:57

「Const」は、「定数」です。

Const Ninzu As Integer = 60

とした時点で、「Ninzu」という変数は、「定数」になり、値を変化させることはできません。

最後まで「60」です。

gokei = 0

で、「gokei」変数の初期化。

「Randomize」は、発生する乱数の「系列」を変更しています。

これがないと、プログラムを実行するたびに、同じ乱数が発生します。

「Sheet2.Active」は、エクセルの「Sheet2」シートをアクティブ(一番前)にして、標準での読み書きの対象シートにしています。

For k = 1 to Ninzu

「k」は、「1」から「Ninzu」すなわち「60」まで、1つずつ増えてゆきます。

tensu = Rnd() * 100

「Rnd()」は、「0~9.999999・・・」までの数値を発生します。

「tensu」は「Integer(整数型)」ですから、「0~99.99999・・・」の値が、丸められた数値、すなわち「0」から「100」までの数値が入ります。

gokei = gokei + tensu

これは、単純ですね、合計を出しています。

gyo = (k - 1) \ 10 + 1

「k」は、「1~60」まで変化します。

「\」は、「割り算の商」ですから、「k - 1」で、最初は「1 - 1」となり、「0 \ 10」は、「0」です。

最後に「+ 1」とありますから、「1」となります。

これが「k = 10」まで続きます(「10 - 1 = 9」「9 \ 10 = 0」「0 + 1 = 1」)。

「k」が「11~20」までは、「11 - 1 = 10」「10 \ 10 = 1」「1 + 1 = 2」で、常に「gyo」は「2」になります。

あとは、同じように「10」ごとに、「改行」されるように計算しているわけです。

retsu = (k - 1) Mod 10 + 1

今度は、「Mod」です。

「Mod」は、「余り」です。

「k」が「1」のときは、「1 - 1 = 0」「0 Mod 10 = 0」「0 + 1 = 1」、「k = 2」のときは、「2 - 1 = 1」「1 Mod 10 = 1」「1 + 1 = 2」です。

このように最初の10回は、「1, 2, 3, 4, 5, 6, 7, 8, 9, 10」と変化し、次の10回もまた、「1, 2, 3, 4, 5, 6, 7, 8, 9, 10」となります。

もちろん、これが「列」を表しています。

納得いかなければ、自分で「k」にいろいろな値を入れて、確認してみましょう。

Cells(gyo, retsu) = tensu

そうやって求めた、「gyo」(=行)と「retsu」(=列)に乱数で発生させた「tensu」を書き込んでいます。

1行目の列「1~10」まで書き込み、次に2行目の列「1~10」まで書き込み、ということを、人数分繰り返しています。

MsgBox "平均点 = " & gokei / Ninzu

あとは、「gokei / Ninzu」で、「平均点」を出して、表示しているだけです。

この質問は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

2018/1/911:47:04

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。