2008-12-18

ExcelのVisual Basic:課題

VBAの内容は非常に多くてきりがないので、この講義では今日の内容まででひとまず終わります。興味のある人はこのブログに書かれた、他のVBAに関する講義を見てください。VBAの締めくくりとして課題を2つ出しています。少なくとも1番は全員提出してください。提出方法は、プログラムをコピーしてメールの本文に貼り付けてください。

足し算

別のプログラムを書くには、先ほどのプログラムのEnd Subの下の行に
Sub 別のプログラムの名前
と書いてEnterを押すと、区切りの線が自動的に引かれます。

今度は1から100までの数を足してみましょう。
1+2+3+…+99+100と入力していては大変ですので、For文を使った繰り返しで計算しましょう。まず
 wa=0
としておいて
 wa=wa+1 (この時点でwaは1)
 wa=wa+2 (この時点でwaは1+2)
 wa=wa+3 (この時点でwaは1+2+3)
 wa=wa+4
 wa=wa+5

 wa=wa+98
 wa=wa+99
 wa=wa+100
とするとwa=1+2+3+…+99+100になりますので、最後に
 Cells(1,1) = wa
と書いて計算結果を表示しましょう。

Input Box

プログラムの実行中に何かを問い合わせる画面を表示して、入力結果を変数xへ代入するには

x = InputBox("a", "b")

と書いて実行すると

のように表示されます。上のプログラムでaとかbと書いた部分がそのまま表示されていますので、ここを必要に応じて書き直します。

MsgBox

これだけだと入力後何もせずに終わってしまうので

x = InputBox("a", "b")
MsgBox (x)

と書いて、入力した内容が表示されるようにします。

課題1.

1から入力した数までの合計を表示するプログラムを書いてください。
例えば5と入力したら、1+2+3+4+5、つまり15を表示するプログラムです。

ヒント
x = InputBox("a", "b")
y = 10 * x
MsgBox (y)
と書くと、入力した数字の10倍を計算して、その値が表示されます。
課題の場合
x = InputBox("a", "b")
(ここに1+2+…+xを計算してその値をyに代入するプログラムを書く)
MsgBox (y)
とすれば良いです。

If文

先ほどのプログラムでゼロ以下の数を入力したら意味がありません。
ですから、数が正なのかどうか判断させましょう。
判断するにはIf文を使います。書き方は

If 条件 Then
条件が成り立つときに実行する文
End If

です。条件が成り立たないときは別のことをするなら

If 条件 Then
条件が成り立つときに実行する文
Else
条件が成り立たないときに実行する文
End If

のように書きます。

課題2

正の数が入力されたら1からその数までの足し算をして答えを表示し、そうでない場合は"正の数を入力してください"と表示するプログラムを書いてください。
ヒント:
MsgBoxの使い方
MsgBox (y)
のように、変数名を書くとその変数の値が表示されます。
メッセージを表示するには
MsgBox ("正の数を入力してください")
のように、半角(漢字ではない) " で囲ってください。

データの読み込み

まずExcelのA1からA3セルに適当に数字を入力してください。そしてこれらの数字を足し算するプログラムを書きましょう。
 x1=cells(1,1)
 x2=cells(2,1)
 x3=cells(3,1)
 wa=x1+x2+x3
 cells(4,1)="合計"
 cells(4,2)=wa
と書くと、3つの数字を足すことが出来ます。では10個とか100個のデータを足すにはどうすればよいでしょうか。ということで、次の配列を考えます。

配列

これまでの変数はxとかx1のように書きましたが、数学で使うx1, x2のように添え字付の変数を使うことも出来ます。添え字付の変数はx(1), x(2)のように書きます。
使う場合は、プログラムの先頭で

Dim x(100)

のように、何個まで使うか明示しておく必要があります。
もしx(1)は使わなくてx(2)からx(10)まで使うのなら

Dim x(2 To 10)

と書きます。
Cells(1,1)からCells(100,1)までに書かれた数字をx(1)からx(100)へ読み込むには

For i = 1 To 100
 x(i) = Cells(i, 1)
Next i

と書きます。
次に、これらを足すには、1+2+…+100の計算同様

wa = 0
For i = 1 To 100
 wa = wa + x(i)
Next i

と書きます。

MsgBoxのあれこれ

aとかbの部分は必要に応じて書き換えてください。

x = MsgBox("a", 0, "b")

x = MsgBox("a", 1, "b")

OKをクリックするとxに1が代入され、キャンセルをクリックするとxに2が代入されます。

x = MsgBox("a", 1, "b")
MsgBox (x)

を実行して、xの値を確かめてください。
0,1の他にも、次のメッセージボックスの種類があります。

2[中止]、[再試行]、[無視]
3[はい]、[いいえ]、[キャンセル]
4[はい]、[いいえ]
5[再試行]、[キャンセル]

クリックしたボタンとxに代入される値の関係

1OK
2キャンセル
3中止
4再試行
5無視
6はい
7いいえ

来年1月8日は月曜日の講義ですので、次回の講義は15日です。この日までには新しいメールが使えるようになっているはずですので、その使い方を勉強します。

0 件のコメント: