Excel VBA
エクセルでマクロを自作してみた。
気づいた点をメモ。
Sub または Function が定義されていません
まずは簡単なマクロを作り実行してみると、
Sub または Function が定義されていません
というエラーが出て実行できなかった。
自分の作ったマクロが悪いのだと思い、
セキュリティーとかいろいろ調べたが、
結局のところは、CellsをCellと書いていたためだった。
確かにカーソルもその部分を指していた。
単純な綴り間違いだが、初めてだったため
気づくのに時間がかかった。
自分に間違いがあると思いこみ、
解決に時間がかかるというよくあるパターン。
表の値を取得
表から値を取得するのは、
Dim val As Integer Rem カーソル移動させてカーソル位置の値を取得 Range("B5").Select val = ActiveCell.Value Rem 座標で取得 val = Cells(5, 2).Value Rem A1形式で取得 val = Range("B5").Value Rem あるセルからのオフセットで取得 val = Range("A2").Offset(3,1).Value
いろいろとやり方があるが、
通常はCellsかOffsetを使うことになるだろう。
.Valueは記述しなくても大丈夫。
↓ここを参考にしました。
http://www2s.biglobe.ne.jp/~iryo/vba/VBA05.html
ラベル
ラベルへのジャンプは、
GoTo Skip ... Skip:
Integer
Excel VBAのInteger型は16ビットで、
-32768〜32767の範囲しか扱えない。
なので、結構オーバーフローエラーが出る。
大きい整数型はLongを使う。
実数型ならDoubleがよい。
型 | サイズ |
---|---|
Integer | 2バイト整数 |
Long | 4バイト整数 |
Single | 4バイト実数 |
Double | 8バイト実数 |
Currency | 8バイト固定小数(整数14桁小数点以下4桁) |
↓こちらのページを参考にしました。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_array.html