初めて自分の家と他人の家が違う、と意識した時

初めて質問をするので上手く説明ができていなかったら申し訳ございません。

現在excelで関数などを駆使してランダムで四択問題を作成し、簡単な冊子にし生徒などに解かせています。
一応マクロの記録を用いて自動化はできているのですが、おそらくvbaで作った方がスマートになるし、応用もきくと思い調べてもやり方が上手く出てきません。
そこで質問です。

vbaでどういうことを勉強すればランダムで四択の問題がつくれるでしょうか。

何卒よろしくお願いします。

A 回答 (1件)

こんにちは



実際に、問題群がどこにあってどのような方法で行っているのかが全くわかりませんけれど・・

>一応マクロの記録を用いて自動化はできているのですが~
であるなら、基本的な文法を学習すれば、ある程度の改変は可能になると思います。
同時に、その記録マクロに出てくる1文ずつの内容を調べてみて、何を行っているかを解釈できるようになれば、ほぼ大丈夫ではないでしょうか。

>vbaでどういうことを勉強すればランダムで四択の問題がつくれるでしょうか。
例えば、配列なり、セル範囲なりに問題文が連なっているとして、
ひとつだけランダムに選択すれば良いだけならば、
 Int(Rnd * n)
を計算するだけで、その番号を指定できます。
(n は問題数。上記は n が 0 始まりとする場合。1 始まりなら+1)

>おそらくvbaで作った方がスマートになるし、応用もきくと思い調べてもやり方が上手く出てきません。
スマートにする場合は「記録を改変」するという発想では、なかなかできません。
まずは、「最もスマートそうな解決法」を導く力が必要になります。

例えば、上記の例で、
複数の問題を抽出する場合にダブってはまずいので、重複しないようにしたいといった場合には、工夫が必要になります。
そういった、解決方法のロジックを考える力が一番大切でしょう。
これはVBAに限った話ではなく、論理的な解決法を導く能力とも言えます。
(算数の文章問題を解くのと、多少は似たところがあります)

また、調べるにしても、やみくもに「自分が行いたいことそのもの」を検索しても、大抵はなさりたいことは特殊なので、そのような例がそのまま転がっているはずもありません。
うまく分解して、一般的な内容にして検索すれば、たいていのものは見つかると思います。
(VBAに関するWeb上の情報は相当に多いですから)
例えば、上記の例程度であれば「VBA 重複しない抽出 ランダム」あたりで検索すれば沢山の解決方法がみつかります。
    • good
    • 0
この回答へのお礼

拙い文章に細かく、また迅速に回答ありがとうございます。
膨大な情報の中から上手く見つけ出すことが難しかったので、指針を示していただけて助かりました。

お礼日時:2022/04/15 15:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報