わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

VBAについて,知っておくとよいこと1

 VBAとは…
 というのはこれまで,授業の予習課題にしてきました.本記事で,解答そのものを書くわけにいきませんので,分かりやすく書かれたページにリンクしておきます.

 VBAは,WordやPowerPointなどで使えないこともないのですが,Excelで使われてきました.ただし実行までに,何ステップか,すべきことがあります---昔むかし,そういった手間をかけなかったころ,マクロ付きのExcelファイルを開いたらすぐにプログラムを実行し,PCのファイルを破壊するとかコンピュータウイルスをまき散らすとかやりたい放題でして,その反省(として手間を要する)と思っておくといいでしょう.
 まず行っておくのは,Excelのメニューで「開発」を選べるようにすることです.手順は,(1)Excelを起動してワークシートを編集できる状態で,(2)「ファイル」「オプション」「リボンのユーザー設定」の順に押し,(3)「開発」の左にチェックを入れてOKボタン,なのですがスクリーンショットを含む詳しい解説は,次のページをご覧ください.

 上記は一度やっておけば,Excelを終了してまた起動しても,メニューに「開発」が表示されます*1
 次はマクロ付きExcelファイルごとに行う設定です.Excelを起動して,新規にファイルを作るなら,「名前を付けて保存」の操作を行い,ファイルの種類を「Excel マクロ有効ブック (*.xlsm)」に変更しておきましょう.マクロが入ったファイルを開いたときには,「マクロを有効にする」,もしくは「編集を有効にする」や「コンテンツの有効化」といったボタンを押さないと,機能しません.
 VBAのプログラムコードを見るには,メニューの「開発」を押してから,その下に出てくる中で最も左の「Visual Basic」を押します.すると別のウィンドウが出てきます.タイトルバーには「Microsoft Visual Basic for Applications」と表示されますが,授業では「Visual Basic Editor」,略して「VBE」と呼んでいましたので以下でもこの語を使います.
 複数のExcelファイル(マクロの有無を問わず)を開いているとき,VBEの表示は非常に見づらく,意図しないファイルにVBAのプログラムを記録してしまう可能性があります.VBEではMDI*2というユーザインタフェースを採用しているからです.慣れないうちは,VBAの編集をするときは,開くExcelファイルを一つだけにすることをお勧めします.
 ただし,「プログラムをどこの中で書くのか」は知っておくべきです.CalendarMaker.xlsmというファイルを開いたとき,VBEのウィンドウの左上に,次のように表示されたとします.
f:id:takehikom:20200404225301j:plain
 このとき,プログラムコードは「Module1」に格納されます*3.そしてMDIに基づくウィンドウの中では,タイトルバーに「CalendarMaker.xlsm - Module1」と書かれています.
 プログラムを編集する際には(Subプロシージャを追加するときなど),「VBAProject(保存したいファイル名)」の配下のModule1(または他の番号)であることを,しっかり確認しましょう.ちなみにModuleは追加することもできます.具体的には,「標準モジュール」を右クリックして「標準モジュール」を選ぶだけです.そうやって複数のモジュールに別々にVBAのプログラムを書き,一つのxlsmファイルに保存することも可能ですが,授業ではプログラムの規模が小さいことと見通しの良さから,複数のモジュールに分けて書くことは指示しませんでした(がときどき複数モジュールのxlsmファイルが提出されていました).
 マクロを実行するには,Excelのワークシートに戻って,メニューの「開発」タブの中の「マクロ」のボタンを押します.実行したいマクロ名を選んでから,「実行」のボタンを押すと,実行します.実行できるマクロには要件があるのですが,VBAの文法と関連する話なので,「知っておくとよいこと2」の記事で解説します.
 マクロ実行時のエラーの対処法を書いて,本記事を終わることにします.プログラムコードに構文ミスなどがあったときは,エラーメッセージを含む小さなウィンドウが表示されます.
f:id:takehikom:20200404225309j:plain
 そうなったら,「OK」のボタンを押し,VBEでエラーの原因を修正して,再度マクロを実行し直せばいいじゃないかと,思いたくなりますが,再実行はできません.エラーメッセージが出ても,OKボタンを押したあとも,マクロの実行が継続しているからです.
 マクロの実行を止めるには,VBEのメニューで「実行」の中の「リセット」です.アイコンの並びの中に「リセット」のアイコンがあり,これを押すのでもかまいません.

*1:一昨年度までは,大学管理のPCでプログラミングの授業をしていて,シャットダウンで設定が消えてしまったため,ログオンしてExcelを起動するたびに,開発タブを表示する作業をしていました.

*2:VBEではありませんが画面例をhttps://hamachan4.exblog.jp/18365928/で見ることができます.

*3:もしこれが表示されていないなら,「標準モジュール」の2つ左が「+」の箱囲みになっているかもしれません.そこをクリックすると,標準モジュールの中が展開されます.