2013-12-12

Excelのマクロ

HTMLの課題

自分でテーマを決めて、ホームページを作ってください。 内容は何でもいいですが、例えばパワーポイントの課題と同じテーマを使えば内容を新たに考える手間が省けます。
条件は

  1. 少なくともindex.htm, link.htm, index1.htm の3つのファイルを作って下さい。index2.htmなどもっと作っても構いません。
    index.htmは http://www.edu.cc.okayama-u.ac.jp/[公開DIR名]/ と指定すれば他の人からも読むことが出来ます。それ以外のページは、例えばlink.htmだったら http://www.edu.cc.okayama-u.ac.jp/[公開DIR名]/link.htm と指定すれば読むことが出来ます。
  2. index.htmからはlink.htm, index1.htmへのリンクを作り、link.htm, index1.htmからindex.htmに戻るリンクを作って下さい。
  3. link.htmには他のサイト(友達、僕、岡山大学、外部などどこでもいいです)へのリンクを作って下さい。
  4. 画像を貼る
  5. 色をつける。文字の色でも背景の色でもいいです。
  6. 練習問題2の表を入れる。この表を入れておけば、もっと別の表を入れても構いません。
  7. 岡山駅から、どこか行ってみたい場所への経路を示す地図を入れてください。
    但し、自宅や友人宅など、個人的な場所は駄目です。このページは学内の誰からも見ることが出来ますから。
以上を満たすページを作って、それを他の人が見るためのアドレス http://www.edu.cc.okayama-u.ac.jp/[公開DIR名]/ をメールで送ってください。


Excelの自動処理

Excelで多くのデータを処理していると、同じような操作の繰り返しで面倒になります。
エクセルは、プログラムを書くことで処理を自動化出来ます。
プログラムのことを、マクロとも呼びます。

準備

最初に一度だけやっておくことがあります。
エクセルのファイルからオプションを選びます。

左側で「リボンのユーザー設定」を選んで、右側の「開発」にチェックをつけます。

すると「開発」タブが表示されるので、「マクロのセキュリティ」をクリックします。

すべてのマクロを有効にする(推奨しません。危険なコードが実行される可能性があります)をクリックします。
ここで警告されたように自分で作ったプログラムだけでなく、他の人が作った危険なプログラムも実行できるようになってしまいます。
インターネットからダウンロードしたエクセルファイルを開くときには「警告を表示してすべてのマクロを無効にする」を選んでください。

これで準備は終わりです。

マクロでどんなことが出来るか?

マクロを使うとどんなことが出来るか確かめるために、開発タブの「マクロの記録」をクリックします。

名前は何でもいいのでこのままOKをクリックします。

セルに1,2,3,4,5を入力して、記録終了をクリックします。

ここで、先ほど入力した1,2,3,4,5を全部消してから、「マクロ」をクリックします。

どのマクロを実行するか聞かれるので、そのまま「実行」をクリックします。

すると先ほど入力した1,2,3,4,5が再び入力されます。

このように、マクロを使うと、エクセルの操作を自動化出来ます。
どんな仕組みになっているか見てみましょう。
開発タブのVisual Basicをクリックします。

左側の、標準モジュールの中のModule 1をクリックすると、エクセルが記録したマクロが表示されます。

これが先ほど行った、1,2,3,4,5を縦に順に記録する操作をプログラムに書いたものです。
これから、このプログラムの書き方を勉強しましょう。

自分で書いてみる

新規に書くために、Excelを保存せずに終了させて、もう一度立ち上げてください。
「開発」タブから「Visual Basic」を起動します。

「挿入」から「標準モジュール」を選びます。

するとマクロを書くための場所が開きます。

ここに
sub 練習
とだけ書いてEnterを押します。すると
Sub 練習()

End Sub
となります。

このSub 練習()とEnd Subの間に自分でマクロを書きます。

cells(1,1)=1
と書いて、その上の右向きの三角形をクリックします。

するとエクセルの、上から1行目、左から1列目のセルに1と入力されています。
等号は、左辺を右辺と等しくするという意味で、右側の1を左側のCells(1, 1)に代入します。

さらにCells(1,1)=1とEnd Subの間に
cells(2,1)=2
cells(3,1)=3
cells(1,2)=-2
cells(1,3)=-3
と書いて実行して、cellsの二つの添え字がエクセルの縦と横のどちらに対応しているか確かめてください。

For文

Cells(1, 1) = 1
Cells(2, 1) = 2
Cells(3, 1) = 3
Cells(4, 1) = 4
Cells(5, 1) = 5
Cells(6, 1) = 6
Cells(7, 1) = 7
Cells(8, 1) = 8
Cells(9, 1) = 9
Cells(10, 1) = 10
と書くのは大変です。このような似ている処理を繰り返すために
For j = 1 To 10
  Cells(j, 1) = j
Next j
と書くことが出来ます。

練習問題

次の九九の表を作るマクロを書いてください。但し掛け算はセルに入力するときと同じく * です。

保存するときの注意

名前を付けて保存から、必ず「Excelマクロ有効ブック(*.xlsm)」を選んでください。Excelブック(*.xlsx)だとマクロが保存されません。

For文を使った足し算

1から10までの数の合計を計算しましょう。
cells(1,1)=1+2+3+4+5+6+7+8+9+10
と書いても計算できますが、これでは「1から100までの数の合計を計算しなさい」と言われた時に大変です。
同じような作業の繰り返しはパソコンに任せましょう。

sub 足し算()
wa=0
for j=1 to 10
  wa=wa+j
next j
cells(1,1)=wa
end sub

と書いて実行すると、cells(1,1)に1から10までの数の合計が計算されます。
理由は、まず最初にwa=0にしておいて
wa=wa+1 (この時点でwaは1)
wa=wa+2 (この時点でwaは1+2)
wa=wa+3 (この時点でwaは1+2+3)
wa=wa+4 (この時点でwaは1+2+3+4)
wa=wa+5 (この時点でwaは1+2+3+4+5)
wa=wa+6 (この時点でwaは1+2+3+4+5+6)
wa=wa+7 (この時点でwaは1+2+3+4+5+6+7)
wa=wa+8 (この時点でwaは1+2+3+4+5+6+7+8)
wa=wa+9 (この時点でwaは1+2+3+4+5+6+7+8+9)
wa=wa+10(この時点でwaは1+2+3+4+5+6+7+8+9+10)
となるからです。

練習:1から100までの数の合計を計算しなさい。

0 件のコメント: