dポイントプレゼントキャンペーン実施中!

エクセルVBA、超初心者の私に教えてください。

最大50人までのテストの点数をインプットボックスで入力し、平均点をメッセージボックスで表示するプログラムを作りたいのです。
さらに、0を入力するとプログラム終了としたいのです。
よろしくお願いします。

A 回答 (3件)

いやさぁ・・・



Sub TEST()
A = 0: I = 0
Do
I = I + 1
C = CDbl(InputBox(""))
A = A + C
Loop While C > 0
MsgBox CStr(A / (I - 1))
End Sub

この程度で動くことは動くと思うけど、多分これじゃあ「キャンセル」
を押したり、入力ミスしたり(半角数字以外では動かないはず)すると
エラーしちゃうはず。問題はそういう「想定外の処理」にどう対応する
かで、初心者でもそれは逃れられない問題なんだよね。

それに、上のプログラムは(分かっていて)ある程度プログラミングの
基本を無視しているんだよね。多分「教科書」の記述とは違っている筈
なんで、そのまま課題提出すると得点は貰えないかと。

ま、考え方の基本はあってる筈なので、参考になれば。
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても参考になりました。

もう一つ教えて欲しいのですが、50人までという場合は
hairetuを使用すればよいのでしょうか?

宜しければ教えてください。

お礼日時:2009/06/29 15:08

>インプットボックスで入力し


>メッセージボックスで表示する
判っているならその部分はコードを書けるでしょう。
それにプログラム全般だが、繰り返しに持っていくわけだが、制御構造でどのステートメントを使うのかな。
配列に50データ蓄えると言う人も居るかもしれないが、それは避けたほうがよいだろう。すると、そのデータまでの合計を保持する変数を1つ儲け
  今回までの合計=前回までの合計+今回データ
式で書くと
  t=t+d
この左辺tと右辺のtが同じでよい考え方理解できる?
初心者は文章でも良いフローチャートでしっかり処理ロジックを
形有るものにして、コードを考えるべきだ。
それとこの課題は勉強のためであろう。エクセル使うなら、データ入力にINPUTBOXなど使わないよな。処理パターンモデルのためのモデルだ。
それに他人に使わせるものになると何倍ものチェックやガードが必要になることも考えておいて。
    • good
    • 0
この回答へのお礼

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

こちらは教科書からではないのですが、回答が無く、
私自身が独自で勉強している超初心者でして、
質問できる人がいなかったので、投稿させていただきました。
imogasiさんのおっしゃるとおり、確かに処理パターンモデルなのだと思います。
しっかり勉強して出直します。
ありがとうございました。

お礼日時:2009/06/29 20:16

こんにちは。



 ソースを書いてもらっても勉強にならないと思います。
 とりあえず、貴方が作ったソースを貼って見たらどうでしょう。
 文法がまったく分からないのであれば、下記サイトを参考にして下さい。
  http://www.officepro.jp/excelvba/index.html
  「基本文法」、「繰り返し処理」、「条件分岐」、「ダイアログ」辺りを読めば作れると思います。

では。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ちゃんと勉強して、分かるようになりたいので、
サイトを参考にさせて頂きます。

お礼日時:2009/06/29 15:11

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