見出し画像

【ノンプロ研ExcelVBA中級講座】1-1スコープ

こんばんは。aliceです。

今年初めてのブログです。今年もよろしくお願いします。

さてさて、今年はノンプロ研のExcelVBA中級講座を受講しています。

早速第1回が終わり、ちょこっと復習をしたのでまとめてみたいと思います。今回はアウトプットできたらいいなぁ。

今日のテーマは「スコープ」です。


スコープとは

 変数もしくはプロシージャなどを使用できる範囲のことで、3つあります。


1 プロシージャレベル変数(ローカル変数)

🐽一番範囲が狭い

🐽普段よく使っている変数

🐽Dimステートメントを使う

🐽プロシージャのなかで「Dim 変数名 As データ型」と書く

🐽他のプロシージャからはアクセス(使用すること)はできない

画像1

おうち(プロシージャ)から出ないproBooちゃん。

おうち大好きproBooちゃん。

proBooちゃんの宣言の仕方はこんな感じ。

画像14


おうち(プロシージャ)から出ようとするとエラーになります。


2 プライベートモジュールレベル変数(プライベート変数)

🐽Privateステートメントを使う

🐽宣言セクションに「Private 変数名 As データ型」と書く

🐽同じモジュールの中からであればアクセスが可能

画像3

地元大好きなPriBooちゃん。

地元が大好きすぎて市外(別モジュール)には行きません。

地元に貢献するpriBooちゃん、なんて素敵なのでしょう。

priBooちゃんの宣言の仕方はこんな感じ。

画像4

市外(別モジュール)に行くとエラーになります。


3 パブリックモジュールレベル変数(パブリック変数)

🐽一番範囲が広い

🐽Publicステートメントを使う

🐽宣言セクションに「Public 変数名 As データ型」と書く

🐽どのモジュールからもアクセスができる

画像5

どこにでもお出かけするpubBooちゃん。

行動力バツグン、

市外(別モジュール)でも全然余裕です。どこにでも行きます。

pubBooちゃんの宣言の仕方はこんな感じ。

画像6

市外(別モジュール)にでも全然OKです。


スコープはできるだけ絞って使う(プロシージャレベルを優先して使う)


1 可読性

🐽可読性とはコードの読みやすさ

例えば、こんなコードがあった場合

画像16

BooってどのBooちゃんなの!?ってなるよね~。

プロシージャレベルなのか

画像8プライベートモジュールレベルなのか

画像9

パブリックモジュールレベルなのか

画像10

どのBooちゃん??となる

→情報を得るためにはいちいち宣言セクション・他モジュールに行く必要がある

→パッと見わからんじゃ~ん。可読性悪いじゃ~ん😱😱😱

でも

画像14

だったら、すぐに「あっプロシージャレベルのbooちゃんだ」とわかる

画像1

いえい。

ということでプロシージャレベルを優先して使いましょう。


2 管理対象が増える

宣言セクションにたくさん変数を書いておくとあちこちで使えるから便利&ラクじゃん!ヤッホー!!となるかもしれないけど

ちょっと待って。

それはどのプロシージャからでもアクセスできるということなのです。

例えば

画像6

パブリックモジュールレベルでpubBooという名前がつかわれていたら

呼んだ?

画像5

プライベートモジュールレベルではその名前を使うことができません。

全部のBooちゃんの名前を覚えておいて、「あれ?この名前もう付けたかな?Boo子、Boo太、Boo美、もういる?ブーブー」なんて考えながらプログラミングしていたら、頭がパンクしちゃいます😱😱😱

なのでプロシージャレベルを優先して使いましょう。


ということで今日のまとめ。

スコープには3種類ある。

🐷プロシージャレベル変数

🐷プライベートモジュールレベル変数

🐷パブリックモジュールレベル変数

可読性・管理を考えてできる限りプロシージャレベルを使いましょう(スコープは絞って使いましょう)

ではまたいつか

ルンルン。

画像15



この記事が気に入ったらサポートをしてみませんか?