GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBA超入門

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA超入門−9ステップで"Hello World!"からオブジェクト指向まで!
  初めてのVBAマクロ "Hello World!"
 
■ VBA(マクロ)は決して難しくありません
 
あなたはVBAマクロ機能を使いこなしてみたくありませんか?
Excelの最大の機能といってもよいでしょう。VBA機能。これをつかうことでExcelが本当の魔法の杖に変身します。
たとえばVBAを使用することで複数のクライアントPCからデータベースサーバーに接続して受注管理や仕入れ管理を行う、いわゆるクラサバ(クライアントサーバー)システムを構築することも可能です。
個人の仕事から複数員の並列処理まで…VBAは本当にすごいです。

ExcelVBAは紹介する量もはんぱなく多いので、とりあえずこの章ではVBA初心者に向けた解説を行います。
中・上級者向けの解説は後述の「エクセルVBAを極める」編で解説していきたいとおもいます。
さあ、それではさっそくVBAを使ってみましょう! 新しい世界があなたを待っています!

プログラミングの第一歩は"HelloWorld!"を表示させることです。他のどんな言語でも最初は"HelloWorld!"から始まっています。
わがエクセル大事典でも、それにならって"HelloWorld!"を表示させるプログラムから入りたいと思います。

Excelを起動します。Alt+F11を押下します。
なにかでてきましたね。これがVBE(Visual Basic Editor)です。VBAはここに記述するきまりになっています。
左側にプロジェクトエクスプローラというものがありますか?もしなければCtrl+Rで表示させます。

プロジェクトエクスプローラにツリーが表示されています。その一番下、エクセルのアイコンになっている部分(ThisWorkbookと書かれている)を
ダブルクリックしてください。
右側が真っ白になりましたか?ここがコードウィンドウ、VBAコードを記述する場所です。
さっそく"HelloWorld!"のコードを書いてみましょう。

Sub test()
  MsgBox "HelloWorld!"
End Sub

これだけです。簡単でしょ?
実行させるにはどうすればいいのでしょう。これも簡単です。カーソル(マウスカーソルではなくコードウィンドウ内の点滅する|です)を
今書いたコード内に移動させF5を押下してください。
エクセルの画面に切り替わってHelloWorld!のメッセージが表示されます。OKをクリックしてやるとメッセージは消えVBEの画面に戻ります。
(マクロというウィンドウが表示された時はそのまま実行をクリックしてください。同じ動作をします)
さてせっかくですので、このコードをこれからいろいろといじくってみましょう。
コードウィンドウのすぐ上に(General)と書かれたコンボボックスがあるはずです。ドロップダウンすると「Workbook」という項目がありますので
クリックしてください。コードウィンドウに

Private Sub Workbook_Open()

End Sub

という記述が追加されましたね。ではさきほどの
MsgBox "HelloWorld!"
の部分を選択してください(反転表示された状態です)ここまで大丈夫ですか?
選択したらそれをそのままPrivate Sub Workbook_Open()のすぐ下にドラッグ&ドロップしてください。こんな感じになってるはずです。

Private Sub Workbook_Open()
MsgBox "HelloWorld!"
End Sub

なってますか?うまくいかなければ切り取り−>貼り付けでもいいですよ。そしたら上の

Sub test()

End Sub

はもう不要なので消しちゃってください。
この状態でVBEを終了させます。エクセルも閉じちゃってください。閉じる前にBook1の変更を保存するか聞いてくるので
デスクトップにtest.xlsという名前で保存しましょう。(名前はなんでもかまいません)

デスクトップをみるとtest.xlsというブックがあるはずですのでダブルクリックで開いてみてください。
おおっとそのまえに…エクセルのマクロのセキュリティが高になっているとマクロは動きません。
ツール>マクロ>セキュリティでセキュリティレベルを中にしましょう。
さあ、準備オッケーです。さきほどのtest.xlsを開いてみてください。
セキュリティ警告が表示されますので「マクロを有効にする」をクリックしてください。
いきなり"HelloWorld!"のメッセージが表示されれば成功です。表示されましたか?
 
・なぜメッセージが表示されたのか?
最初に書いたコードではユーザーがVBEの画面上でF5を押すことで動作しました。
このF5はマクロの実行機能を割り当てられたファンクションキーです。押下されるとそのときにカーソルがある場所のプログラムを実行します。
では保存した後、test.xlsを開いたらなぜメッセージが表示されたのでしょう?それは、
Private Sub Workbook_Open()
というのがブックを開いたときに一度だけ実行するイベントプロシージャというものだったからです。
マクロ(プログラム)を動作させたいときはどんなタイミングがあるでしょう?
一般的にはボタンやアイコンをクリックしたときにプログラムが動作するというものが多いですね。
でもこれはユーザーが「自分で実行ボタンを押した」という動作を理解しているためボタンでプログラムが動くというイメージが強いのにすぎません。
実はプログラムはあらゆるタイミングで動作しています。
数字しか入力できないボックスに文字を入力したら怒られた。という経験はありませんか?
このとき、入力値をチェックするプログラムが背後で動いていたのです。
1時間おきにメッセージを受信する。30分たったら画面が消える。これはタイマーコントロールが背後で時間を計測し動作しているからです。
前回終了時にどんな状態で終了しても、次回起動時には決められたレイアウトで立ち上がってくるソフト。これも起動時に今回のようなプログラムが動作してレイアウトを決められた配置にせっせと戻しているからです。
どうですか?いたるところでプログラムが動いているというのが実感できました?
すべてのプログラムはあるイベントを機に動作を開始します。ボタンをクリックするとプログラムが動くのはボタンのクリックイベントにプログラムが割り当てられているからです。

さて先ほどのプログラムですが起動時だけでなくいつでもボタンで動作するように改良してみましょう。
ALT+F11でもいいですが、今回は少し違ったやり方でVBEを起動させてみます。
ツール>マクロ>Visual Basic Editorをクリックしてください。
VBEが立ち上がりましたね。左側のプロジェクトエクスプローラのどこでもいいので右クリックします。
右クリックメニューの中から、挿入>標準モジュールをクリック。
標準モジュール Module1が追加されました。
ThisWorkbookをダブルクリックすると、前回のコード

Private Sub Workbook_Open()
MsgBox "HelloWorld!"
End Sub

が残っていますのですべて選択してコピー、Module1をダブルクリックしてコードウィンドウに貼り付けてください。
貼り付けたら、少しコードを手直ししましょう。

Public Sub test()
  MsgBox "HelloWorld!"
End Sub

PrivateをPublicに、Workbook_Openをtestに変更しました。
2行目の先頭でTABキーを押しインデントを挿入しています。インデントは字下げのことで、プログラムの可読性を上げるための重要なテクニックです。
面倒でも必ず入れるようにしましょう。

さてこの状態でエクセルに戻ります。ALT+F8を押下してください。マクロというウィンドウが出ましたね。

その中に「test」があってすでに選択されているはずですので、実行をクリックしてください。
メッセージが出ました。

ここで一つ疑問ですが、「Workbook_Open」のほうはなぜマクロのウィンドウに表示されないのでしょう?
答えは「Workbook_Open」プロシージャ(プログラムのこと)がPrivate指定されていたからです。
Publicにすれば同じように表示されます。

Workbook_Openはブックの起動時に自動実行される処理を記述しますので、他のプログラムやユーザーが起動後に呼び出す必要はありません。
だからPrivate指定にして他から呼び出されないようにしているのです。
testをPrivateからPublic に変更したのはユーザーが呼び出すことができるようにするためでした。
より詳しい適用範囲(スコープ)の解説はこちらに記述していますので参照してください。
変数・関数(プロシージャ)の適用範囲(スコープ)

 
 
ではもっと簡単にプログラムを実行させるにはどうすればいいでしょう?
シートに四角形を一つ書いてください。四角形の書き方は大丈夫ですよね。オートシェイプを挿入するんですよ。
四角形を右クリックするとメニューの中に「マクロの登録」があるのでクリック。
マクロの登録ウィンドウが表示されるので先ほどの「test」を選択してください。
これで四角をクリックするたびに"HelloWorld!"が表示されるようになりました。
ちなみにマクロの登録は図形だけでなくクリップアートでも挿入した図でもフォームボタンでもテキストボックスにだって登録できちゃいます。
まあ…あまり変なものに登録するのもかえって使いやすさを損ねてしまうのでおすすめしませんが…

さあ、これでとにもかくにも、VBAでプログラムを書いて呼び出すことができるようになったのです。
これから徐々に難しいプログラミングに挑戦していけば大丈夫です。
ちなみにこれからは、外から呼び出すようなプログラムは標準モジュールのほうに記述していくことにします。
ThisWorkbookと書かれていた所はブックモジュールと言っておもにエクセルブックの操作に関するイベントプロシージャを記述する場所です。
その上にワークシートのアイコンでSheet1(Sheet1)と書いてある部分はワークシートモジュールでワークシートのイベントプロシージャを記述します。
それ以外のプログラムは標準モジュールに書くのが決まりです。覚えておいてください。

  

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,