Excel VBA


かんたんな計算

とりあえず基本的な演算を行なってみることにしました。

四則演算

四則演算といっても、+, -, *, /を使えばいいことは大体分かりますよね。
というわけで、/だけ行なうこととします。 他のものについては試してみてください(といってもいずれ使うのですが)。
さて、コードは次のとおりです。今回も追加は一行だけですね。

001 002 003

Private Sub CommandButton1_Click() Range("B3").Value = Range("B1").Value / Range("B2").Value End Sub

事前にB1とB2に数字を当てはめてください。
ちなみに、B2に0を入れるとゼロ割になるので、エラーを吐きます。

今回はRangeでセルを指定しましたが、数字を使って2次元配列のようにアクセスすることもできます。
そうじゃないと、ループが面倒ですからね。そのためにはCellsを使います。
さっきのコードを書き直しましょう。

001 002 003

Private Sub CommandButton1_Click() Cells(3, 2).Value = Cells(1, 2).Value / Cells(2, 2).Value End Sub

Cellsでは、Cells(行, 列)と指定します。Rangeとは逆なので注意してください。

ところで、.Valueと入力するのはコード補完されるためそれほど面倒ではありませんが、 見た目が悪いもしくはそれすら面倒と思う人がいるかもしれません。
実はこれ省けるので、書かなくてもいいです。
これはValueが標準プロパティだからです。
でも、書くほうが私は好きですね。厳密ですから。

変数を使う

これまで変数を使いませんでしたが、当然変数は使えます。
型としては、
Integer(整数型 2byte)、
Long(整数型 4byte)、
Single(単精度浮動小数点型 4byte)
Double(倍精度浮動小数点型 8byte)
String(文字列型)
と、何も指定しない場合のバリアント型があります。
バリアント型はこの5つのどの型もとることができる型です。
つまり、整数も少数も文字列もとることができます。
じゃあ、バリアント型だけでいいかというとそうではありません。
それは、すべてをとるがゆえにメモリ効率と演算の効率が悪いためです。
適切な型を取るようにしてください。
ただし、リスクを鑑みるに、Singleは使わず、Doubleを使ったほうがいいと私は思います。

型宣言は、Dim 変数名 As データ型
というように行います。
バリアント型なら、Dim 変数名
です。
当然、変数は使う前に宣言しましょう。ってのは当たり前ですが、当たり前でないことをひとつ。
それは、変数名の大文字小文字が区別されないことです。ちょっといやですね。
Windowsではフォルダの大文字小文字も区別されませんが、なーんかいやですねー。
さて、それじゃあ実際に使いましょう。事前にこんな風にデータをセルに入力しておいてください。

001 002 003 004 005 006 007 008 009 010 011 012 013

Private Sub CommandButton1_Click() Dim pi As Double Dim m As Double Dim h As Integer Dim ans As Double pi = Application.WorksheetFunction.pi() 'π m = Cells(1, 2).Value '半径 m = m * m * pi '底面の面積 h = Cells(2, 2).Value '高さ ans = m * h '体積 Cells(3, 2).Value = ans End Sub

動きましたか?ちょっと長くなりましたね。2から5行目が変数の宣言です。
7行目は、円周率πを取得しています。Excelシート上ではpi()でOKなのですが、
VBAでは長ったらしくこんな風に書かなくてはなりません。cosとかは使えるのに何ででしょうね。
あとは、半径を取得して、底面の面積を出し、高さを掛けて、円柱の体積を計算しています。
なお、'以下はコメントとなるということも補足しておきます。
これはExcelのセルにおいても同様ですね。

さて、先ほどバリアント型についてDim 変数名で宣言できるといいました。
これは事実ですが、実は宣言しなくてもこれ使えてしまうのです。
これは良いことだと思いますか?
私からするとぜんぜんよろしくないことです。
なぜかというと、変数名を打ち間違っても新しい変数として認識されたり、 コードが長くなると変数が管理できなくなってしまうからです。
変数の宣言は設定で強制することができます(Perlとかと同じですね)。
エディタの、ツール⇒オプション⇒編集タブの「変数の宣言を強制する」にチェックをつけてください。

結び

どうでしたか?
計算ができるようになり、少しはそれらしいことができるようになりそうだと実感は持てましたか?
しかし、やっぱり制御文を使わないと幅が狭いですね。
つまりこの時点では人力レベルでしかないわけです。


戻る