Excelを勉強しましょう EnjoyExcel

アイコンの機能や関数の説明、VBA初心者向けの勉強方法について情報掲載しています。関数、VBAともに理解が進むように出来るだけ事例を交えて説明しています。

VBA② 環境構築をしましょう。VBEの勉強です。

f:id:EnjoyExcel:20210626171132p:plain

 

前回の投稿でプログラミング言語は環境を用意することが必要だという事を書きました。今回は実際に開発環境を用意していこうと思います。

 

enjoyexcel.hatenablog.com

 

Excelを起動するとセルが並んでいる画面が表示されます。

ここに開発タブを出してみましょう。

 

上方にある「ファイル」→「オプション」を選択。

左側に並んだ情報から「リボンのユーザー設定」を選択。

右側に並んだ情報の中から「開発」という文字を探し左の□をチェックしてレ点を付ける。その後画面右下の「OK」を選択してみましょう。

 

画面上部に「開発」タブが出てきます。

開発タブを選択。一番左にあるVisualBasicというアイコンをクリック。

(開発タブを出さないときは ショートカット 「Alt +F11」)

 

こんな画面が出てくると思います。これがVBEです。正式にはVisualBasicEditorです。この画面を使ってコードを書いていきます。

(青くなってますが画面説明用で色を付けています)

f:id:EnjoyExcel:20210626220201p:plain



 

それぞれの仕事を紹介します。

・プロジェクトエクスプローラ ・・・ データの構成を表示しています

・コードを書く画面 ・・・ そのままです。コードを書く画面です。

・プロパティウインドウ ・・・ データの属性が表示される画面です。

・ローカルウインドウ ・・・ データの状態を見る画面です。

・イミディエイトウインドウ ・・・ テスト用の画面です。

 

プロジェクトエクスプローラ

(最初は標準モジュールは画面にない状態です。今回は説明が必要なためツリーの中に標準モジュールが居る画像を使っています)

f:id:EnjoyExcel:20210626153315p:plain

データの構成を表示しています。

トップにVBAproject・・・というbook名と同じ名前で構成の頂点になる親が存在しています。ひとまずコントロールタワーぐらいの役割だと思っておいてください。

 

この親に紐付いてMicrosoft Excel Objects が居ます。

あくまでイメージですが多くの方が見ているであろうセルの画面はSheet1(Sheet1)と表示されたものになります。

シートごとにセルの画面を持っているのはいつも見ているので馴染みがあると思いますが合わせてコードを書く画面も持っています。シート単体で動く命令はここに書きます。

 

上の画像には未だ居ませんが Sheet2・・・のようにシートを追加するとここにモジュールが追加されていきます。

 

その下 ThisWorkbookというモジュールが居ますね。ここはコード画面しか居ません。何を書くかといいますとExcelbook自体が開いたときに行う作業やデータを×ボタンで終了させるときに合わせて行う作業を書く際に使用するモジュールとなります。

 

最後にデフォルトでは表示されていませんが標準モジュールというものがあります。

ずっと勉強した先に出てくるユーザーフォームやクラスモジュールも同じ考え方ですので標準モジュールで説明します。

 

実際にコードを書くのはその下に居るModule1というところになります。

1が居るという事は2もつくれます。追加したらいくらでも追加できるようになっています。(5つぐらいしか見たことないのでホントは上限あるかも?)

 

ここにコードを書くのはワークブック全体に影響を及ぼしたい命令を書く時です。

 

2021年07月05日(月)追記

書こうと思えばシートモジュールにも他のシートに影響を及ぼす命令を書けます。ただしシートモジュールにコードを書くときはそのシートにおいてのイベントと関連付けておきたい時だけにしてください。(シートを開いた時等)もっといろんなイベントに対してコードが設定出来ますが最初は考えなくて良いです。まずは標準モジュールにコードを書くようにしましょう。

 

ツリーを見ていただきますと標準モジュールとシートモジュールがいるMicrosoft Excel Objectsは並列です。並列なので標準モジュールに書いた命令はシートモジュールには届きません。ここで登場するのが親モジュールです。親である「VBAProject・・・.xlsm」に一旦情報を受けてもらい各シートモジュールに命令を展開してもらいましょう。これで標準モジュールの命令がシートモジュールに展開されるようになっている事が分かりましたね。

 

標準モジュールからシートモジュールへの指示の流れ(イメージ)です。

これならSheet2が出来ても標準モジュールの命令は伝わりそうですよね。

f:id:EnjoyExcel:20210626160317p:plain

次はコードを書く画面です。