マクロの自動記録で雛型作って適当に改造というお手軽さ。~ 一般企業の業務システムなんて殆ど何でも作れちゃうし!~ でもトラブルの元になることもあったりする。~ #contents *はじめに [#ue758f7e] VBAはMicrosoft Officeに搭載されている統合開発環境Visual Basic Editor(VBE)上で開発する。~ コードはMicrosoft Excel 2003と2007で動かしているが2003以前でも2007以降でもたぶん動く。~ *HelloWorld [#e42bc4f1] -''下準備'' --''2003''~ ツール→マクロ→セキュリティ→中もしくは低をクリック --''2007''(2010も2013も同じ)~ 多少面倒くさい。今後のために開発タブを表示させその後設定を変更する。~ 左上のMicrosoft Officeボタン→Excelのオプション→基本設定→Excelの使用に関する基本オプション→~ 開発タブをリボンに表示する→マクロの設定→ 警告を表示しすべてのマクロを無効にする又はすべてのマクロを有効にするをクリック -''VBEの起動・プログラムの実行'' --''2003''~ ツール→マクロ→Visual Basic Editor --''2007''~ 開発タブ→Visual Basic~ あとは以下をコピペして実行→Sub/ユーザーフォームの実行→HelloWorldを選択して実行 Sub HelloWorld() 'これはコメント、アポストロフィーのあとに入力する 'メモみたいなもん '実行結果はA1セルにHelloWorldと表示される Range("A1").Value = "HelloWorld" End Sub -''解説''~ Sub HelloWorld()からEnd Subまでがプログラムを構成する最小単位であるプロシージャである。~ Sub HelloWorld()はプロシージャ名となる。HelloWorldの部分を書き換えれば好きな名前に出来る。~ 次に何を(オブジェクト)どうするのか(プロパティ)を指定しなければならない。~ Range("A1").Value はRange(セル)にValue(値の代入)をするという意味である。~ Valueは他にもセル内の値を参照するときにも使う。= は値を代入するときに使う記号である。~ ""内に代入したい値を入力する。ただし数値であれば""は不要である。= 1 + 2 のようにすれば計算結果を代入できる。~ ""を使うと(= "1 + 2")計算結果ではなく1 + 2という文字列が代入される。~ また= "1" + "2"のようにすると12という文字列が代入される。 -プロシージャ名のルール *変数の利用 [#kfb3527e] -''変数とは''~ 利用したいデータ(文字列や数値)を一時的に取り置くための箱のようなもの パソコンのメモリに一定のスペースを確保しそこにデータを記憶させる。~ -''変数を利用したプログラム'' 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||| *計算 [#w57ac774] Sub 計算() Dim a As Double Dim b As Double a = Range("A1").Value b = Range("B1").Value '加 Range("D1").Value = a + b '減 Range("E1").Value = a - b '乗 Range("F1").Value = a * b '除 Range("G1").Value = a / b '商 Range("H1").Value = a \ b 'あまり Range("I1").Value = a Mod b 'べき乗 Range("J1").Value = a ^ b '文字列結合演算子 Range("k1").Value = a & b End Sub -''解説''~ これらの記号(+,-,*,/,\,Mod,^)は算術演算子と呼ばれるもので各種計算を行うためのものである。~ 文字列結合演算子は複数の文字列をひとつにまとめるためのものである。 *セルの操作 [#h7f52bd5] -''絶対参照'' -''相対参照'' -''カット・コピー・ペースト'' *条件分岐 [#rfb39303] *繰り返し [#t1f7555b] *配列 [#z2f105a1] *ユーザー定義型の変数 [#w1e77530] *ユーザーフォーム [#u3c9f8de] *ワークシートとブックの操作 [#w17595bb] *変数の適用範囲 [#e2d2f20e] *関数の活用 [#od08c566] *ユーザー定義関数 [#qa414172] *グラフ [#s128df53] *ピボットテーブル [#h539fec6] *デバッグ [#jc8d8c64] *エラー処理 [#yfeaf1e4] *Win32APIの呼び出し [#q53b9111] *参考 [#y7791cc5] -''入門''~ --VBAエキスパート公式テキスト Excel VBA スタンダード~ 文法事項に関しては一番詳しいのではないか。ベーシックは購入の必要なし~ -''ユーザーフォーム''~ --アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール~ --ひと目でわかるMicrosoft Excel VBAコントロール&フォーム活用術~ -''web系''~ --Excel VBAでIEを思いのままに操作できるプログラミング術~ --新・Excel VBAで極めるシステムトレード 最強パワーアップ編~ -''ゲーム''~ --Excel VBA アクションゲーム作成入門~ -''シミュレーション・数値計算''~ --Excelで遊ぶ手作り数学シミュレーション―グラフ機能とVBAプログラムを自在に操る~