VBA Excel覚え書き

ちょっと私用でExcelのマクロとか久しぶりに触ったので整理しておく。あまり使ったこともないせいかほとんど覚えてなかった。間違いが結構あるかも。

変数宣言

Dim 変数名 As Type

手続き, 関数

Sub 手続き名()
  ' 処理
End Sub

Function 関数名(引数1 As Type, ...)
  ' 処理
  関数名 = 戻り値
End Function

手続きと関数の違いは戻り値を返すかどうか。また,手続きは引数を取らない。

ループ

For i = 1 To 10 (Step 2)
   ' ...
Next

While cond Do
   ' ...
Loop

Excel関連

  • 数字でセルの選択をするにはCells(x, y)を使う。(動的に選択する)
  • 数式を動的に入れるときは,Cell.FormulaR1C1へ代入する。
  • 動的に代入する場合,数式はR1C1形式を使う。ex. "=SUM(R[-1]C:R[-1]C[10])"
  • セルの中で使える関数を関数定義の中で使うには,Application.WorksheetFunction.〜として使える。
  • 調子に乗って100x100とか処理させようとすると結構Excelがお釈迦になるので注意。

最初は使うところが全部MacなのでAppleScriptを使おうかと思ったのですが,Winへ乗り換えて困るという事態が起きなくはないかなとか考えると結局VBAという選択肢に落ち着いてしまいました。Visual Basic for ApplicationじゃなくてJavaScript for ApplicationだったらMacでもJavaScriptでOfficeの自動化ができたのに…。