skillup

技術ブログ

プログラミング全般

ExcelVBAに関して(主にプロシージャ)

投稿日:

いつも半年ごとぐらいに触っていてあまり知識が蓄積しないので(汗)これを機につまづいたところをちょっとメモ。

基本

基本的な変数の代入や条件分岐、ループなどはあまり迷わないのでちょっと省略させていただきます。主にプロシージャ関連について。

ExcelVBAでは基本的にプロシージャという単位で処理を呼び出します。プロシージャの塊がモジュールです。

JavaやPHPでたとえるとプロシージャ=メソッド、モジュール=クラスみたいなものっぽいです。

また変数の定義はDim 変数名 as 型で表記。通常通り、データをいれてあげればOKですが、オブジェクト(よく使いそうだなーと思うのはコレクション)は動きが若干異なり、Set コレクション = new Collectionが必要になります。

ちなみにすべてのプロシージャの上に変数を置くとグローバルな変数(or 定数になります。)

ちなみに外部からプロシージャを呼び出したいときは下記のようにCallをつけて呼び出します。※つけなくても呼べるようですがわかりやすさのためにつけたほうがいいようです。

呼び出される側は変数を定義し、値渡しか参照渡しかを定義できます。

ちなみに戻り値がほしい場合はモジュールをFunctionプロシージャにする必要があります。

またメソッドの最後にプロシージャの名前 = 対象の変数としなければいけません。またオブジェクトの場合は戻り値を取得するときもSet ~というメソッドが必要になります。

オブジェクトでなければSetという文字は必要ありません。

メモ

  • 開発画面でモジュールの部分でカーソルが当たっているときに実行を押すとその部分のモジュールのテストが始まる。モジュールごとにテストができる点はかなりありがたいですね。
  • まだあまり使っていませんが、ブレークポイントを使ったステップ実行やウォッチウィンドウ(特定の変数を監視して値を出力してくれる)はデバッグにかなり使えそうです。
  • オブジェクトの使い方にかなり癖があり、ここが結構ハマりました。ここは最初、ちょっと難所かと思います。
  • ちなみにデバッグは直接Cellに出してあげてもいいですが、Debug.Printを使ってイミディエイトウィンドウを使っても観ることができます。

参考リンク

昨日までJavaJavaしてた人がいきなりExcelのVBAを実装する羽目になったときのためのメモ

タイトルからはわかりにくいですが、まとめてきな記事で必要なことがほぼ網羅されてます。

-プログラミング全般

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

ログの設計指針について

今まで10以上近い現場で仕事をしてきましたが、どの現場でも絶対必要になる(かつどこもあまり対策が取られていない)技術としては 検証したい状態の復元がすぐにできる(テストデータ作成) ログの適切な設計 …

no image

型の意識について(ValueObjectの活用など)

現在の現場でコードレビューをしてもらう機会が増え、自分が弱かった型の意識について。 現在ではPHPでも型を記述してコーディングすることが一般的なため、静的言語と同じように型を意識することが増えてきたか …

no image

バッチスクリプトで気をつけたい点

実務でバッチ処理を作る際に気をつけるべきと思ったこと。 基本的にエラーをいかに捉えていかにログに吐くかを最初に考える。まずはエラーありき。失敗するもの、想定した値がこない、あるいは値がないを前提として …

no image

ミスを少なくする工夫について

プログラマであればだれもが「いかにバグを少なくするか」に腐心すると思います。 ところが、人間がある以上、バグ(ミス)は絶対にゼロにはなりません。バグ云々以前に、「人間はもともとミスをする生き物だ」とい …

no image

Observeパターンについて

Contents1 Observeパターン2 他の対策2.1 プログラムで頑張って制御2.1.1 メリット2.1.2 デメリット2.2 Databaseのtirggerを使う(DB更新系のみ)2.2. …

アーカイブ