マクロの自動記録で雛型作って適当に改造というお手軽さ。
一般企業の業務システムなんて殆ど何でも作れちゃうし!
でもトラブルの元になることもあったりする。
はじめに†
VBAはMicrosoft Officeに搭載されている統合開発環境Visual Basic Editor(VBE)上で開発する。
コードはMicrosoft Excel 2003と2007で動かしているが2003以前でも2007以降でもたぶん動く。
バージョン間の互換性は高い。
- 下準備
- 2003
ツール→マクロ→セキュリティ→中もしくは低をクリック
- 2007(2010も2013も同じ)
多少面倒くさい。今後のために開発タブを表示させその後設定を変更する。
左上のMicrosoft Officeボタン→Excelのオプション→基本設定→Excelの使用に関する基本オプション→
開発タブをリボンに表示する→マクロの設定→
警告を表示しすべてのマクロを無効にする又はすべてのマクロを有効にするをクリック
- VBEの起動・プログラムの実行
- 解説
Sub HelloWorld()からEnd Subまでがプログラムを構成する最小単位であるプロシージャである。
Sub HelloWorld()はプロシージャ名となる。HelloWorldの部分を書き換えれば好きな名前に出来る。
次に何を(オブジェクト)どうするのか(プロパティ)を指定しなければならない。
Range("A1").Value はRange(セル)にValue(値の代入)をするという意味である。
Valueは他にもセル内の値を参照するときにも使う。= は値を代入するときに使う記号である。
""内に代入したい値を入力する。ただし数値であれば""は不要である。= 1 + 2 のようにすれば計算結果を代入できる。
""を使うと(= "1 + 2")計算結果ではなく1 + 2という文字列が代入される。
また= "1" + "2"のようにすると12という文字列が代入される。
- プロシージャ名のルール
変数の利用†
- 変数とは
利用したいデータ(文字列や数値)を一時的に取り置くための箱のようなもの
パソコンのメモリに一定のスペースを確保しそこにデータを記憶させる。
- プログラム
Sub 変数()
'あらかじめA1セルとB1セルに入力されている整数を掛けて計算結果をC1セルに表示する
Dim i As Integer
Dim j As Integer
i = Range("A1").Value
j = Range("B1").Value
Range("C1").Value = i * j
End Sub
- 解説
まずは変数名と変数で何のデータを扱うのか(変数の型)を定める。これを変数の宣言という。
VBAの場合はDim 変数名 As 変数の型となる。Integerは-32768から32767までの整数を扱うための型である。
Dim i As Integer
Dim j As Integer
次に用意した変数に値を代入する。今回はセルを参照してそこに入力されている値を代入する。
i = Range("A1").Value
j = Range("B1").Value
C1セルに計算結果を代入する。
Range("C1").Value = i * j
- VBAの特殊仕様
これは他言語ではよく見る仕様であるが…
int i,j,k;
VBAではこのようにするとk以外はVariantになってしまう。
Dim i, j, k As Integer
正しくは
Dim i As Integer, j As Integer, k As Integer
他にもVBA(VB)は独特の仕様があるから気を付けよう。
- 変数名のルール
- 変数の型一覧
型 | 扱えるデータ | メモ |
Integer | | |
long | | |
Songle | | |
Double | | |
String | | |
Byte | | |
Boolean | | |
Currency | | |
Date | | |
Object | | |
Variant | | |
Sub 計算()
Dim i As Single
Dim j As Single
i = 3
j = 2
'加
Range("D1").Value = i + j
'減
Range("E1").Value = i - j
'乗
Range("F1").Value = i * j
'除
Range("G1").Value = i / j
'商
Range("H1").Value = i \ j
'あまり
Range("I1").Value = i Mod j
'べき乗
Range("J1").Value = i ^ j
'文字列結合演算子
Range("k1").Value = i & j
End Sub
- 解説
これらの記号(+,-,*,/,\,Mod,^)は算術演算子と呼ばれるもので各種計算を行うためのものである。
文字列結合演算子は複数の文字列をひとつにまとめるためのものである。
セルの操作†
- 相対参照
- 相対参照とは
現在、選択されているセルから相対的に位置を指定する。
式の入ったセルの右下を引っ張ってコピーしたときに参照するセルが変わるアレ。
- プログラム
- 絶対参照
- 絶対参照とは
直接、セルを指定する。セルの前に$をつけるとコピーしても参照するセルが変わらない
=$C$1+$D$1
- プログラム
- カット・コピー・ペースト
条件分岐†
繰り返し†
ユーザー定義型の変数†
ユーザーフォーム†
ワークシートとブックの操作†
変数の適用範囲†
関数の活用†
ユーザー定義関数†
グラフ†
ピボットテーブル†
デバッグ†
エラー処理†
Win32APIの呼び出し†
- 入門
- VBAエキスパート公式テキスト Excel VBA スタンダード
文法事項に関しては一番詳しいのではないか。ベーシックは購入の必要なし。
- ユーザーフォーム
- アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール
- ひと目でわかるMicrosoft Excel VBAコントロール&フォーム活用術
- web系
- Excel VBAでIEを思いのままに操作できるプログラミング術
- 新・Excel VBAで極めるシステムトレード 最強パワーアップ編
- ゲーム
- シミュレーション・数値計算
- Excelで遊ぶ手作り数学シミュレーション―グラフ機能とVBAプログラムを自在に操る