【ノンプロ研ExcelVBA中級講座】1-1スコープ
こんばんは。aliceです。
今年初めてのブログです。今年もよろしくお願いします。
さてさて、今年はノンプロ研のExcelVBA中級講座を受講しています。
早速第1回が終わり、ちょこっと復習をしたのでまとめてみたいと思います。今回はアウトプットできたらいいなぁ。
今日のテーマは「スコープ」です。
スコープとは
変数もしくはプロシージャなどを使用できる範囲のことで、3つあります。
1 プロシージャレベル変数(ローカル変数)
🐽一番範囲が狭い
🐽普段よく使っている変数
🐽Dimステートメントを使う
🐽プロシージャのなかで「Dim 変数名 As データ型」と書く
🐽他のプロシージャからはアクセス(使用すること)はできない
おうち(プロシージャ)から出ないproBooちゃん。
おうち大好きproBooちゃん。
proBooちゃんの宣言の仕方はこんな感じ。
おうち(プロシージャ)から出ようとするとエラーになります。
2 プライベートモジュールレベル変数(プライベート変数)
🐽Privateステートメントを使う
🐽宣言セクションに「Private 変数名 As データ型」と書く
🐽同じモジュールの中からであればアクセスが可能
地元大好きなPriBooちゃん。
地元が大好きすぎて市外(別モジュール)には行きません。
地元に貢献するpriBooちゃん、なんて素敵なのでしょう。
priBooちゃんの宣言の仕方はこんな感じ。
市外(別モジュール)に行くとエラーになります。
3 パブリックモジュールレベル変数(パブリック変数)
🐽一番範囲が広い
🐽Publicステートメントを使う
🐽宣言セクションに「Public 変数名 As データ型」と書く
🐽どのモジュールからもアクセスができる
どこにでもお出かけするpubBooちゃん。
行動力バツグン、
市外(別モジュール)でも全然余裕です。どこにでも行きます。
pubBooちゃんの宣言の仕方はこんな感じ。
市外(別モジュール)にでも全然OKです。
スコープはできるだけ絞って使う(プロシージャレベルを優先して使う)
1 可読性
🐽可読性とはコードの読みやすさ
例えば、こんなコードがあった場合
BooってどのBooちゃんなの!?ってなるよね~。
プロシージャレベルなのか
プライベートモジュールレベルなのか
パブリックモジュールレベルなのか
どのBooちゃん??となる
→情報を得るためにはいちいち宣言セクション・他モジュールに行く必要がある
→パッと見わからんじゃ~ん。可読性悪いじゃ~ん😱😱😱
でも
だったら、すぐに「あっプロシージャレベルのbooちゃんだ」とわかる
いえい。
ということでプロシージャレベルを優先して使いましょう。
2 管理対象が増える
宣言セクションにたくさん変数を書いておくとあちこちで使えるから便利&ラクじゃん!ヤッホー!!となるかもしれないけど
ちょっと待って。
それはどのプロシージャからでもアクセスできるということなのです。
例えば
パブリックモジュールレベルでpubBooという名前がつかわれていたら
呼んだ?
プライベートモジュールレベルではその名前を使うことができません。
全部のBooちゃんの名前を覚えておいて、「あれ?この名前もう付けたかな?Boo子、Boo太、Boo美、もういる?ブーブー」なんて考えながらプログラミングしていたら、頭がパンクしちゃいます😱😱😱
なのでプロシージャレベルを優先して使いましょう。
ということで今日のまとめ。
スコープには3種類ある。
🐷プロシージャレベル変数
🐷プライベートモジュールレベル変数
🐷パブリックモジュールレベル変数
可読性・管理を考えてできる限りプロシージャレベルを使いましょう(スコープは絞って使いましょう)
ではまたいつか
ルンルン。
この記事が気に入ったらサポートをしてみませんか?