Sub before()
Dim a
Dim b
Dim c
具体的な処理1行目
具体的な処理2行目 '←ここを変数で表現したいとする。
具体的な処理3行目
End Sub
'パターン[a]
Sub pattern_a()
Dim a
Dim b
Dim c
具体的な処理1行目
Dim d '←ここで変数宣言
具体的な処理2行目 (変数dを使って表現)
具体的な処理3行目
End Sub
'パターン[b]
Sub pattern_b()
Dim a
Dim b
Dim c
Dim d '←ここで変数宣言
具体的な処理1行目
具体的な処理2行目 (変数dを使って表現)
具体的な処理3行目
End Sub
'パターン[c]
Sub pattern_c()
Dim a
Dim d '←ここで変数宣言
Dim b
Dim c
具体的な処理1行目
具体的な処理2行目 (変数dを使って表現)
具体的な処理3行目
End Sub
ゲストさんの投稿
(投稿ID: 3887) 添付ファイルのダウンロード権限がありません
実際に変数を記述した式の順番、
これについて教えて頂けますでしょうか。
変数を、「必要だ」と自分が気付いた順番で記載すると、
'dim jusho
'jusho=range("C2").value
'dim ku
'ku = instr(range("C2").value,"区")
'dim gyo
'for gyo = 2 to 11
の順番になりました。
その後、'jusho=range("C2").value の("C2")の箇所を
'"(C & gyo)"に変更すると、
添付のようなエラーが出てしまいました。
これはおそらく、
「gyoという変数を宣言する前の行の記述にさかのぼって
"C2"の箇所にgyoを当てはめて使ってはダメだよ」
という意味だと思うのですが、
変数を宣言する(dim)記述と、
変数を定義する記述は、どの順番で書くのが正しいのでしょうか。
2つ以上の変数が必要になった場合、
必要だと判明した順番で書くと、
上から順に、'dim ばかりにはならず、きれいに揃いません。
それを整理しようとした時に、
どういう順番で整理するのが正しいのかをご指導願います。
小川慶一さんのコメント
(コメントID: 5438)
> 「gyoという変数を宣言する前の行の記述にさかのぼって
> "C2"の箇所にgyoを当てはめて使ってはダメだよ」
> という意味だと思うのですが、
そのとおりです。
いただいた画像キャプチャでは、
となっています。
これは、 Dim gyo よりも前の行で(1行前)で変数 gyo に値を格納しようとしているのでNGです。
> 変数を宣言する(dim)記述と、
> 変数を定義する記述は、どの順番で書くのが正しいのでしょうか。
変数については、以下の動画で復習を。
基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義
https://forum.pc5bai.com/lesson/page/104/
基礎講座第1章9 - 変数を活用するときの注意点
https://forum.pc5bai.com/lesson/page/105/
「注意点」でもお話しているとおり、変数を使うときの流れは、以下のとおりです。
[1] 変数を作る(宣言する、と言います)
[2] 変数に値を格納する
[3] 変数に格納された値を利用する
> 2つ以上の変数が必要になった場合、
> 必要だと判明した順番で書くと、
> 上から順に、'dim ばかりにはならず、きれいに揃いません。
> それを整理しようとした時に、
> どういう順番で整理するのが正しいのかをご指導願います。
質問の意味が分かりません。
以下の[a]-[c]どれかの趣旨のご質問でしょうか?
[a] Dim ... , Dim ... という変数宣言を、Subプロシージャ先頭のほうで固めて行いたい
[b] 特に意識しないでも上記[1]→[2]→[3]の流れで変数を使えるようになりたい
[c] 変数が登場する順序とそれらの変数を使う順序は一致しているべきか?
[d] それ以外(詳細に再度説明願います)
[a] であれば、話は簡単です。
「Dim ... とかは、 Sub ... の直後に書く」と自分でルールを決めることです。
[b] も、話は簡単です。
「あ、ここの固定値を変数で扱えるようにしよう」と思ったら、その直前(か、もっと前)の行に、 Dim ... という一行を書く。あとは、流れで。
[c] は、どうでもよいです。
[a], [b], [c] は、以下の違いがあるだけです。(変数宣言が、だいぶ前か、直前か?の違いだけ)
[a], [b], [c] について、「どちらのほうが優れている」とは、これだけでは言えません。