マクロの自動記録で雛型作って適当に改造というお手軽さ。~
一般企業の業務システムなんて殆ど何でも作れちゃうし!~
でもトラブルの元になることもあったりする。~

#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 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,^)は算術演算子と呼ばれるもので各種計算を行うためのものである。~
文字列結合演算子は複数の文字列をひとつにまとめるためのものである。
*セルの操作 [#h7f52bd5]
-''相対参照''
--''相対参照とは''~
現在、選択されているセルから相対的に位置を指定する。
式の入ったセルの右下を引っ張ってコピーしたときに参照するセルが変わるアレ。
--''プログラム''
 Sub 相対参照()
 'セルG7を選択する
 Range("G7").Select
 'ActiveCellは現在選択されているセルを参照する。
 'Offsetはセルを移動させる。左の数値は上下の指定、右の数値は左右の指定。
 '下に1つ、左に3つセルを移動させる。移動後のセルはJ8。
 ActiveCell.Offset(1, 3).Select
 End Sub
--''解説''~
現在のセルの位置を基準とした相対位置
|-2,-2|-2,-1|-2,0|-2,1|-2,2|
|-1,-2|-1,-1|-1,0|-1,1|-1,2|
|0,-2|0,-1|基準|0,1|0,2|
|1,-2|1,-1|1,0|1,1|1,2|
|2,-2|2,-1|2,0|2,1|2,2|
-''絶対参照''~
--''絶対参照とは''~
直接、セルを指定する。セルの前に$をつけるとコピーしても参照するセルが変わらないアレ。~
 =$C$1+$D$1
--''プログラム''
---単一のセルを指定
 Sub 絶対参照01()
 Range("A1").Select
 End Sub
---複数の独立したセルを選択
 Sub 絶対参照02()
 Range("B1,B3,B5,B7,B9").Select
 End Sub
---連続したセルを選択
 Sub 絶対参照03()
 Range("C1:D5").Select
 End Sub
---おまけ
 Sub 絶対参照04()
 Range("A1,C1:D5").Select
 End Sub
-''Cellsによる指定''~
行番号と列番号を数字で指定する。列は1がA列、2がB列、3がC列…のようになる。~
行や列を変数で指定して変化させたい場合、Rangeではなくこちらを使う。~
 Cells(行番号,列番号).Select
-''カット・コピー・ペースト''
--''プログラム''
*条件分岐 [#rfb39303]
*繰り返し [#t1f7555b]
*配列 [#z2f105a1]
*ユーザー定義型の変数 [#w1e77530]
*ユーザーフォーム [#u3c9f8de]
*ワークシートとブックの操作 [#w17595bb]
*変数の適用範囲 [#e2d2f20e]
*関数の活用 [#od08c566]
*ユーザー定義関数 [#qa414172]
*グラフ [#s128df53]
*ピボットテーブル [#h539fec6]
*デバッグ [#jc8d8c64]
*エラー処理 [#yfeaf1e4]
*Win32APIの呼び出し [#q53b9111]
*参考 [#y7791cc5]
-''入門''~
--よくわかる Microsoft Excel 2010 VBAプログラミング実践
--よくわかる Excel2007 VBAプログラミング実践編
--よくわかるMicrosoft Office Excel VBAプログラミング実践編~
上記三冊はExcelのバージョンこそ違うがほぼ同じ内容。~
--VBAエキスパート公式テキスト Excel VBA スタンダード~
文法事項に関しては一番詳しいのではないか。ベーシックは購入の必要なし。~
-''ユーザーフォーム''~
--アプリ作成で学ぶExcel VBAプログラミングユーザーフォーム&コントロール~
--ひと目でわかるMicrosoft Excel VBAコントロール&フォーム活用術~
-''web系''~
--Excel VBAでIEを思いのままに操作できるプログラミング術~
--新・Excel VBAで極めるシステムトレード 最強パワーアップ編~
-''ゲーム''~
--Excel VBA アクションゲーム作成入門~
-''シミュレーション・数値計算''~
--Excelで遊ぶ手作り数学シミュレーション―グラフ機能とVBAプログラムを自在に操る~

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS