「VBA」カテゴリーアーカイブ

【Microsoft Office Home and Business 2010】ExcelでVBA(マクロ)を使う為の準備


マクロを使う為の準備作業

Microsoft Office Home and Business 2010でExcelマクロを組む為には、いくつか準備をしておく必要があります。名前が長いので以下は、Office 2010と略します。

その手順をまとめておきます。

ファイルの拡張子をxlsmに変更する

メニュー > ファイル > 名前を付けて保存

ダイアログが起動したら

ファイルの種類(T):でExcel マクロ有効ブック(*.xlsm)を選択しファイルを保存します。

するとファイルの拡張子が xlsx → xlsm として保存されます。

Office 2010でVBAの開発を行う場合、事前に必ずxlsmのファイル形式にしておきましょう。

メニュー見出しに開発タブを表示する

初期状態では、開発タブがありません。

Excelでマクロ(VBA)を組む場合、事前に開発タブを出しておく必要があります。

メニュー > ファイル > オプション > リボンのユーザ設定

Excelのオプションというダイアログが起動します。

開発にチェックを入れます。

OKを押します。

するとメニューに開発タブが追加されます。

マクロを組む場合には、この開発タブの中から必要に応じた項目を選択して利用していきます。

なお、余談ですがVisual StudioなどでC#を使ってコーディングをする時には、「プログラムを組む」と言いますが、VBAでコーディングをする場合、「マクロを組む」という表現が使われます。

なぜかは不明です。どっちでも良いでしょう。

マクロ実行時のトリガーとしてボタンを使う方法

ユーザが[実行]ボタンを押した時に定義したマクロを実行する様な場合には、

開発タブ > 挿入 > フォームコントロール

よりボタン(フォームコントロール)をクリックしExcelシート状で適当な大きさにドラッグします。

ボタンをクリックすると↑の様な表示になります。

〇の部分をドラッグする事でサイズ変更を行う事が出来ます。

また、文字列の編集をする場合、文字の部分をクリックすると文字列を編集する事が出来る様になります。

ボタンにマクロを割り当てる方法

ボタンの上で右クリック > マクロの登録(N)…

定義済のマクロを選択しOKボタンを押します。

ここでは、テストというマクロを既に定義しています。

これで実行ボタンが押された場合には、「テスト」のコードが実行されます。

マクロブックを保存しようとした時に、「プライバシーに関する注意:」が出た場合

初めて作成したマクロブックを保存しようとした時に

プライバシーに関する注意:このドキュメントには、マクロ、ActiveX コントロール、XML 拡張パックの情報、または Web コンポーネントが含まれています。これらはドキュメント検査機能で削除することができない個人情報が含まれる場合があります。

といったエラーメッセージが表示される場合があります。

この表示を消す方法は

メニュー > ファイル > オプション > セキュリティセンター > セキュリティセンターの設定(T)… >プライバシー オプション >

ファイルを保存するときにファイルのプロパティから個人情報を削除する(R) 

のチェックを外します。

これでマクロを保存する時におせっかいな確認ダイアログが表示されなくなります。

フォームに設定したボタンのサイズを変更するには?

ボタンの上で右クリック  > コントロールの書式設定(F)

ダイアログが起動したら「サイズ」タブを選択します。

そして「高さ」「幅」をcm単位で指定すればOKです。

手動でドラッグしてサイズ変更をしようとしてもなかなかきっちりサイズを合わすのは難しいです。そこで、この様に直接数値を入力するのが確実です。

フォームに設定したボタンを整列するには?

ボタンを複数設置した場合、ボタンの端と端の位置を揃えた方が見栄えが良くなります。しかし、手動でやってもなかなか綺麗に揃わないのですが、以下の手順を行えば自動で揃えられます。

まず、

Control ボタンを押しながら整列したいボタンを複数選択します。

続いて

ページレイアウトタブを選択します。

その中から「配置」を選択します。

左揃え、左右中央揃え、右揃え、上揃え・・・

用途に応じて選択します。

私が一番使っているのは

左右に整列 + 上下中央揃え

です。この2つを行えば大体ボタンが良い感じで整列されます。

Excel関数は、VBAさへ覚えていれば覚える必要が無い

Excelには色々な関数が定義されています。

しかし、いちいちあんな関数群を覚える必要はありません。

基本的な、SUM・AVERAGE・ROUND関数当たりを覚えておけばOKです。

なぜなら、VBAさへ理解しておけば自分で必要な関数を独自の名前、俺俺関数を定義する事が出来るからです。

最後に

今回は、VBAを初めてExcel2010で組む人に向けてかなり基本的な事のみ解説してみました。

他にも色々と便利な使い方・効率の良い開発方法など色々とノウハウがあります。

私が忘れそうになったらノウハウツリーにメモっていきます(^^)b


VBA(マクロ)を使う上で覚えておいた方が良い便利なショートカットコマンド


ショートカットコマンドを覚えると開発の生産性が上がる

Visual Studioはもちろんのこと、VBAであったとしてもよく使うショートカットコマンドは便利なので覚えておくと良いです。開発スピードが全く違います。プログラマやSEをしていながらブラインドタッチも出来ない人が極稀にいますが本当にヤバイです。今時ブラインドタッチが出来ないというのは本当にヤバイので特打PLUSでも買って今すぐブラインドタッチをマスターしましょう。OLでもブラインドタッチは当たり前に出来ます。

なお、生産性があがる事は良い事ですが、火を噴いた開発プロジェクト(俗に言うデスマプロジェクト)では、仕事の出来る人には、次々と仕事が振られてしまい収集が付かなくなります。どんなスーパープログラマも異常な仕事量を振られると消火不良を絶対に起こします。突出した開発スキルのある人はそれを隠して普通のプログラマぶりましょう。それがIT業界の波をうまく乗る秘訣です。

VBAのショートカットコマンド

マクロ実行の中断

Control + Break

無限ループを走らせてしまった場合などに重宝します。

ブレークポイントの設定・解除

F9

VBAエディタ上でブレークポイントを設定したい箇所にフォーカスを設定しF9ボタンを押すとブレークポイントの設定が出来ます。ブレークポイントとは、プログラム開発においてプログラムの実行を一時的に中断し、要所要所での変数の値を確認する場合などに使用されます。言葉では分かり辛いのでテストコードを書いて自分で実際に動かしてみると良いでしょう。

ステップイン

F8

ステップオーバー

Shift + F8

ステップアウト

Control + Shift + F8

1つ前に戻す(直前の修正前にコードなどを戻す)

Control + Z

Windows全体でも使えるショートカットコマンドです。

変数の定義箇所へジャンプ

調べたい変数を選択するか、変数の上で1クリックして

Shift + F2

を押します。Visual Studioの場合には、F12を押すだけなのでマクロエディタは、若干糞ですね。

マクロの実行

F5

よく使うので絶対覚えておきましょう。

デバッグ出力を行う方法

Visual Studio + C#でデバッグ出力を行う場合、

Debug.WriteLine(“”);

という風に記述します。VBAでも同じ様な事を行えます。

その際には、イミディエイトウィンドウというのを出します。

このイミディエイトについて調べてみると英語では、immediate → 即座の、即刻の、即時の

という意味があります。次いでに覚えておいても良いでしょう。

VBAエディターのメニューから出していきます。

メニュー > 表示(V) > イミディエイトウィンドウ(U)

ショートカットコマンドは、 Control + Gです。

VBAでデバッグ出力を行う場合

Debug.Print (“テストデバッグ出力”)

こんな感じでコードを書きます。

するとイミディエイトウィンドウに表示されます。

ループ処理の中でデバッグ出力をする際などに使用すると良いです。配列の要素数が少ない場合、デバッグ出力しなくとも「ウォッチ」から確認すれば良いのですが、要素数が大きい場合などDebug.Printを使用した方が効率が良いです。

 

 


VBAエディターのツールバーにデバッグメニューを表示するには?


ツールバーにデバッグメニューを表示すると効率が上がる

VBA(マクロ)で開発を行う際に、頻繁に使うデバッグ操作(ステップイン、ステップオーバー、ステップアウト、選択範囲のコメントアウト)などはツールバーに表示させておくと開発効率があがります。ショートカットを覚えてしまってもいいですが、覚えるのは嫌だけど開発効率をあげたいという人は必ず設定しましょう。

ツールバーの何も無い所で右クリック > デバッグにチェック

VBA-1

 

こんな感じでよく使うデバッグメニューが表示されました。VBA-2

 

開発効率が全然違うので確実に出しておきましょう。