tech34.com
メインページ
最終更新:2013/04/20
お知らせ
表示画像が小さすぎる場合は、ウィンドウの横幅を広げると、最大で原寸大まで拡大されます。(または画像をクリック)
Internet Explorer 6 では、画像がウィンドウの横幅まで拡大表示されます。
機能メニュー
ダウンロード販売(Shop)
公開中
ブログ(blog.)
公開中
掲示板(BBS)
公開中
マクロ(VBA)の基礎知識
マクロで出来ること
公開中
実行するための準備
公開中
開発するための準備
公開中
開発に必要な予備知識
公開中
開発テクニック
公開中
各種テクニック
PC操作
追加中
Microsoft Excel
追加中
Microsoft Access
追加中
Adobe PhotoShop
追加中
SEO関連
追加中
ネット収入関連
追加中
未分類
追加中
個別メニュー
社内SE 関連
公開中
当サイトの実装について
公開中
ホーム
⇒ マクロ(VBA)の開発テクニック
知っていると便利な開発上のテクニック
技術的なテクニックについては「
ダウンロード販売(Shop)
」の中級以上の商品もご覧下さい。
マクロ(VBA)の習得方法
命令や構文であれば、ネット上に情報がたくさんありますが、
Excel,Word であれば「マクロの記録」機能が有効です。
「マクロの記録」を実行し、知りたいと思った命令の操作を行うと、
自動的に命令が記述されますので、後は微調整してソースに張り付けるだけです。
「マクロの記録」で注意すべき点は、絶対参照か相対参照かを意識することです。
絶対参照とは、どんな時も必ず同じ座標を表す固定的な参照方法で、
相対参照とは、処理位置に応じて相手座標が変化する参照方法です。
2007以降は「相対参照で記録」という機能がありますので、どちらで記録すべきかを意識して下さい。
2003以前はこの機能がないため、記録されたコードが意図した参照となっているか注意する必要があります。
それと、VB画面のヘルプに「MSDN ホームページ」というのがありますが、
そちらで検索を行うとかなり詳細な情報が得られます。
ただし、情報に複数製品、複数バージョンが混在していますので、少し見づらいかもしれません。
以下に比較的見やすいVBAの解説ページをいくつか載せておきます。
・
mougモーグ(即効テクニック⇒Excel VBA テクニック)
・
Office TANAKA(VBA(マクロ))
・
Happy!Happy!Island(Smile!Excel)
・
ExcelVBA.net
・
Excel マクロ・VBAのお勉強
・
アプリケーションとしてのVBA
VBの命令については以下が参考になります。
・
SAK Streets(VB 開発言語資料)
マクロ(VBA)の消し方
マクロを消したつもりなのに、マクロを有効にするか聞かれたり、
そもそも何を消せばマクロが無くなったことになるのか分からなかったりしませんか?
マクロの存在チェックはマクロコードの記述とモジュール・フォームの存在を見ていますので、
マクロが存在しない状態にするためには、モジュールとフォームを全て解放し、
オブジェクト内のコードを全て削除すれば良いです。
オブジェクト内のコードは「Ctrl+A」で全て選択してから「Delete」を押すと確実です。
イミディエイトウィンドウの使い方
開発を行う上で大変役立つのが、イミディエイトウィンドウです。
VB画面のメニュー「表示」⇒「イミディエイトウィンドウ」、もしくは「Ctrl + G」で表示されます。
いろんなことに使えますが、まずこのウィンドウでは、入力が可能になっています。
「? 1+2」または「print 1+2」と入力してEnterキーを押すと、「3」と表示されることからわかるように、
命令の実行機能が備わっています。
これを利用し、一行に書ける程度の命令は、イミディエイトウィンドウで単独実行してみることが可能です。
(ファイルを開いたまま処理が中断してしまった時に、命令「Close」を単独実行させ、ファイルを閉じる等)
この機能は、実行の一時中断中やステップ実行中にも利用出来ますので、
その時点の式の計算結果を確認したりするのにも使えます。
(計算式でなければウォッチウィンドウが利用出来ます。)
イミディエイトウィンドウから、プロシージャの呼び出しを行うことも可能です。
(関数の場合は戻り値を取得するようにするか、「Call 関数名()」と記述して呼び出します。)
実行コード中に「debug.print "変数名:" & 変数」のように記述しておくと、
そのステップを実行したタイミングでイミディエイトウィンドウに
「"変数名:" & 変数」の処理結果が出力されますので、これを利用して、デバッグを行うことが可能です。
(出力限界行数がありますので、あまりたくさん出力すると、最初の方が消えてしまいます。)
ウォッチウィンドウの使い方
オブジェクト内部にはいろいろなメンバやプロパティが含まれますが、
デバッグ作業中にそれらの状態を確認するにはウォッチウィンドウを利用します。
VB画面のメニュー「表示」⇒「ウォッチウィンドウ」で表示されます。
下図のように、さらに配下の内容を確認することも可能です。
「定義」と「元の位置へ移動」
プロシージャの数が増え、いくつものプロシージャが呼び出されるようになってくると、
ソースの解析に費やす労力は、大きなものとなってきますが、
呼び出し記述されているプロシージャを右クリックし、「定義」を選択すると、
そのプロシージャのソースが表示されるようになっています。
また、呼び出しプロシージャからさらに呼び出しプロシージャを確認し、
最初のプロシージャに戻るような時も、右クリックから「元の位置へ移動」を
繰り返すことによって、簡単に最初の位置に戻ってくることが可能となっています。
複数行の一括コメント化とその解除
開発を行っていると、一時的に複数行の実行を取りやめたい場合等があったりします。
この時、一行一行コメント化するのは大変で、一時的にどこかに退避しておくのも危険ですが、
こちらも標準では表示されていない一括コメント機能と、その解除機能が存在しますので、
利用手順を以下に記します。
VB画面のメニュー「表示」⇒「ツール バー」⇒「ユーザー設定」を選択します。
「ユーザー設定」画面が開きますので、「コマンド」タブの分類から「編集」を選択し、
コマンドのリストから「コメント ブロック」と「非コメント ブロック」を
既存のツールバーのどこかにドラッグ&ドロップします。
既存のツールバーに変更を加えたくない場合は、となりのタブ「ツールバー」より、
新規作成を行うと、なにも登録されていないツールバーを作成することが出来ます。
コメント化、または非コメント化したい行を選択状態で、今設定したボタンを押すと、
選択範囲が一括して変更されます。
オブジェクトに記入した処理はオブジェクトに付いてくる
シートに書いたコードは、シートを複写した際に一緒に複写されます。
シートに書くコードに、シートより上位の参照を記述しないようにすることで、
複写されたシートでも同じ機能を提供できるようになりますので、
開発時に気にかけてみてはいかがでしょうか。
例えば、最も左上のセルの値は、フルパスで書くと
「Application.ThisWorkbook.Sheets("シート名").Cells(1, 1).Value」になりますが、
シートに書く場合は「Cells(1, 1).Value」だけでも利用できます。
複数シートを切り替える場合の自分自身は、「Me.Cells(1, 1).Value」と記述すればよいでしょう。
見た目と型は、必ずしも一致しない
テクニックというよりは注意点なのですが、
数値のように表示されているからといって値が数値であるとは限りません。
これは書式等の問題ではなく、内部で保持するデータ型の問題であるため、
型変換等にて意図しないエラーが発生した場合は、内部のデータ型を疑ってみて下さい。
(セルであれば登録時に決定されますので、削除後に書式を変更して再登録すれば変更されます。)
マクロの動作は取り消し機能の対象外
Excelに手入力した内容であれば、張り付け等であっても取り消し機能が常に利用できますが、
マクロが行う処理は取り消しポイントが不明であるため、取り消し機能が動作しません。
大きな変更を加えるマクロであれば、実行前に自身を別ファイルに保存しておく等の手段を講じましょう。
実行の一時中断やステップ実行
これは現在の開発環境としては、ごく標準的な機能なのですが、重要なので記載しておきます。
まずブレークポイントですが、実行を止めたい行の左端をクリックするか、
その行にカーソルを置いた状態で「F9」キーを押します。
次に「F5」等にて通常実行すると、ブレークポイントを設定した行にさしかかった時、
実行前状態で一時停止します。
ステップ実行は「F8」を押す度に一行処理されますが、「Ctrl」や「Shift」と組み合わせることで、
動作が少し変化します。
ステップオーバーの場合はプロシージャ呼び出しがあった時、呼び出された側のプロシージャの中を
ステップ実行せず、呼び出しもとに戻るまで一気に処理する、といった具合です。
再度通常実行に戻す場合は「F5」キーを押します。
※ 赤いのがブレークポイントで、黄色いのが実行中ステップです。
VB画面でのホイール利用(2003)
VB 6.0 いわゆる2003以前はソースのスクロールにマウスのホイールが利用出来ません。
これを改善するためにアドインプログラムが提供されていますので、
対象環境の方は、利用してみてはいかがでしょうか。
Microsoftのサポートページ
よりダウンロード可能です。
前ページへ