For cnt = 0 To 5
st = stAry(cnt)
Debug.Print st
Next
For cnt = 0 To 5
' st = stAry(cnt)(A)
Debug.Print st
Next
配列の要素に入っている値を調べる例を紹介するとあります。
しかし、(A)がないとjunのみ出力されます。配列が保持されないならば、For cnt=0 to 5は必要ないのではないかという疑問がうまれ保持するにはどうしたらよいのかいうことから何度も質問して申し訳ありませんでした。変数はモジュールレベル変数で宣言しても、一次静的配列は構文内しか保持されないという結論でよろしいでしょうか。結論がないと次に進めませんのでよろしくお願いします。
Option Explicit
Private cnt As Long
Sub Sample1()
Dim cnt As Long
Dim st As String
Dim moji0 As String
Dim moji1 As String
Dim moji2 As String
Dim moji3 As String
Dim moji4 As String
Dim moji5 As String
moji0 = "jan"
moji1 = "Feb"
moji2 = "Mar"
moji3 = "Apr"
moji4 = "May"
moji5 = "Jun"
st = moji0
st = moji1
st = moji2
st = moji3
st = moji4
st = moji5
For cnt = 0 To 5
Debug.Print st
Next
End Sub
Sub Sample2()
Dim cnt As Long
Dim st As String
Dim stAry(5) As String
stAry(0) = "jan"
stAry(1) = "Feb"
stAry(2) = "Mar"
stAry(3) = "Apr"
stAry(4) = "May"
stAry(5) = "Jun"
st = stAry(0)
st = stAry(1)
st = stAry(2)
st = stAry(3)
st = stAry(4)
st = stAry(5)
For cnt = 0 To 5
Debug.Print st
Next
End Sub
井上 聡さんの投稿
(投稿ID: 4444)
配列はほとんど忘れていました。ADOを勉強する中で復習しようと思いテキストを読みました。
発展テキスト2P24
配列の要素に入っている値を調べる例を紹介するとあります。
しかし、(A)がないとjunのみ出力されます。配列が保持されないならば、For cnt=0 to 5は必要ないのではないかという疑問がうまれ保持するにはどうしたらよいのかいうことから何度も質問して申し訳ありませんでした。変数はモジュールレベル変数で宣言しても、一次静的配列は構文内しか保持されないという結論でよろしいでしょうか。結論がないと次に進めませんのでよろしくお願いします。
小川 慶一さんのコメント
(コメントID: 6113)
まず、インデントの揃ったコード書きましょう。
それから、引用部分だけでも動作可能なコードを送ること。
雑です。やりなおしてください。
こんなことくりかえしていても、絶対に上達しませんよ。
何度くりかえし言っても改善しないなら、今後、基礎編レベルの課題がふさわしい受講生に対しての当然の対処として、基礎編以外の内容についての回答は拒否します。
> 小川様何度もお手数おかけして申し訳ありません。
> 配列はほとんど忘れていました。ADOを勉強する中で復習しようと思いテキストを読みました。
> 発展テキスト2P24
>
>
> 配列の要素に入っている値を調べる例を紹介するとあります。
>
> しかし、(A)がないとjunのみ出力されます。配列が保持されないならば、For cnt=0 to 5は必要ないのではないかという疑問がうまれ保持するにはどうしたらよいのかいうことから何度も質問して申し訳ありませんでした。変数はモジュールレベル変数で宣言しても、一次静的配列は構文内しか保持されないという結論でよろしいでしょうか。結論がないと次に進めませんのでよろしくお願いします。
>
田中 宏明さんのコメント
(コメントID: 6114)
こんにちは。
Subプロシージャ内の変数(配列も変数の一種)は、プロシージャ終了まで保持されていますよ。
例えば、下記のようなことをして確かめてみてください。
小川 慶一さんのコメント
(コメントID: 6115)
> 配列はほとんど忘れていました。ADOを勉強する中で復習しようと思いテキストを読みました。
以前に送付いただいたエクセルファイルに入っていたコードを再利用して2つのサンプルコードを用意しました。
お送りいただいたコード内にあった2つのfor next構文のうち前者を展開したものです。
sample1, sample2、いずれも、"Jun"と6回出力されるだけです。
ということで「配列だから挙動が違う」とか「モジュールレベル変数だから挙動が違う」とか、いう問題ではありません。
このくらいに(発展編受講生にとっては)自明なことがコードを見た瞬間に一発で分からなければ発展編2の内容なんて理解できるわけないですよ。
問題は、あなたに基礎編レベルの技術についての理解も検証能力も論理的思考力もないことです。
ですから、前述のとおり、基礎編の演習を徹底的にくり返されることをおすすめします。
さらに、レジュメは印刷して声に出して何度も読み上げてください。講座本編の動画も最低2回は観なおすことを強く推奨します。
基礎編演習をどのくらいのスピードで解決できる力が必要か?
特別に、制限時間を示します。以下の時間でできるようにならないと話にならないと思って何度も練習してください。
出現回数を数える。CountIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/150
制限時間6分
条件に一致するデータを別表に転記する。AutoFilterより便利な条件抽出マクロ。
https://forum.pc5bai.com/lesson/page/144
制限時間7分
条件に一致するデータを別シートに転記する
https://forum.pc5bai.com/lesson/page/145
制限時間9分
とびとびに存在するデータを拾って加工する
https://forum.pc5bai.com/lesson/page/146
制限時間7分
勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?
https://forum.pc5bai.com/lesson/page/151
制限時間8分
各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ
https://forum.pc5bai.com/lesson/page/156
制限時間8分
複数の記号に挟まれた文字列を取り出す
https://forum.pc5bai.com/lesson/page/155
制限時間12分
> 小川様何度もお手数おかけして申し訳ありません。
> 配列はほとんど忘れていました。ADOを勉強する中で復習しようと思いテキストを読みました。
> 発展テキスト2P24
>
>
> 配列の要素に入っている値を調べる例を紹介するとあります。
>
> しかし、(A)がないとjunのみ出力されます。配列が保持されないならば、For cnt=0 to 5は必要ないのではないかという疑問がうまれ保持するにはどうしたらよいのかいうことから何度も質問して申し訳ありませんでした。変数はモジュールレベル変数で宣言しても、一次静的配列は構文内しか保持されないという結論でよろしいでしょうか。結論がないと次に進めませんのでよろしくお願いします。