エクセル雑感
変数を考えることはロジックを考える事

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2021-04-11 最終更新日:2021-04-11

変数を考えることはロジックを考える事


変数を考えることはロジックを考える事


変数宣言の位置についての議論は絶えません。
先頭に宣言、直前で宣言
しかし、これらは単なるコーディング上のテクニックの話であり本質から離れています。
中上級者になってからのテクニックとプログラミングの本質がごっちゃになって議論されてしまっている気がします。


少なくとも小さなプロシージャーにおける変数宣言位置は個人・組織でのローカルルールでしかありません。
ループ処理を書こうとした時、ループカウンタが必要なことを初心者は学びます。
2重ループなら、ループカウンタが2つ必要なことを初心者は学びます。


このとき、変数は必要になった時に宣言すれば良いのだから、変数の事は後で考えれば良い。
そんなことがあり得るのでしょうか。
ある処理を書こうとした時、その処理に必要な変数を考えるという事は、そのロジックを考える事と同じことです。


そして、必要な変数が頭に思い浮かんでいるのに、その宣言を使用直前まで記述せずにいろというのは不自然です。
必要な道具は最初に用意してから始めなさいと小学校で教わりました。
習字の授業では何を用意しますか。


習字を始めるなら、下敷きを用意して、紙を用意して、文鎮を用意して、すずりを用意して、、、
筆は、書き始めるまで用意せずにいるのでしょうか。
必要な道具は全て手元に揃えてから始めるはずです。


2つの変数を入れ替えるプログラムを書いてください。
変数が1つ必要なことはある程度プログラムを経験している人なら直ぐに分かる事です。
しかし初心者は手が止まります。
どうしたら良いのか考えます。
変数を1つ用意して、そこに取り出せば入れ替えられると気づきます。



つまり、変数を考えることはロジックを考える事なんです。
この考えは上級者になっても同じです。
数値、文字、オブジェクト、何が必要か考えることはロジックを考えることです。
さらには、どのようなクラスが必要かを考える事にもなります。


クラス変数の宣言位置やインスタンス生成タイミングはテクニックの問題です。
これらのテクニックは、スキルによって書き方が変わってくるでしょう。
そんなことは些末なことです。
どのようなクラスが必要なのかを考えることが重要なのです。
つまりは変数を考えることが重要だという事と同じです。


プログラミングを始める当初は、変数は先頭に書き出した方が良いと私は考えています。
実際に書き進めると、変数が足りない事に気づきます。
コーディングとしては、必要になったら宣言して構いません。


しかし、単に必要になったから宣言を追加すれば良いというだけで済ませずに、当初の考えにその変数が漏れていた事を反省したほうが良いのです。
自分の考えが足りていなかったことを反省したほうが良いという事です。
この繰り返しによってプログラミング力が付いてくると思っています。


もちろん、中上級者になって規模の大きいものを作るようになったら話は少し違ってきます。
そこまで進んだときには、変数と言った細部ではなく、もっと全体の構成を最初に考えるようになります。
先ほど言いましたが、どのようなクラスが必要かといったことを考えます。


しかし、着手する前に必要な道具を考えるという点では、変数を最初に考える事と同じことだと思います。
初心者で短いコードを書いているうちに、最初に必要な変数を考えるクセを付けておくことは後々役にたってくることと思います。


以上のことから、私はプログラミングの習いたての当初は、変数を先頭に宣言して書いてみることをお勧めします。




同じテーマ「エクセル雑感」の記事

保護されたブックの非表示シートについて
VBAコーディング規則に関する連ツイ
将棋とプログラミングについて~そこには型がある~
変数を考えることはロジックを考える事
VBA今日のひとこと/VBA今日の教訓 on Twitter
ローカル版エクセルが「Office Scripts」に変わる日
エクセルVBA 段級位 目安
DXってなんだ? ITと何が違うの?
在庫を減らせ!毎日棚卸ししろ!
エクセル馬名ダービー
VBA学習のお勧めコース


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ