発展2の配列についての質問です。DVDにて講座購入済みです。 Sub GetZangyoList_Array() Dim st As String Dim cnt As Long Worksheets("残業3").Activate Dim stAry(5) As String stAry(0) = "jan" stAry(1) = "Feb" stAry(2) = "Mar" stAry(3) = "Apr" stAry(4) = "May" stAry(5) = "Jun"
For cnt = 0 To 5 st = stAry(cnt) Next For cnt = 0 To 5 Debug.Print st Next End Sub
> 発展2の配列についての質問です。DVDにて講座購入済みです。 Sub GetZangyoList_Array() Dim st As String Dim cnt As Long Worksheets("残業3").Activate Dim stAry(5) As String stAry(0) = "jan" stAry(1) = "Feb" stAry(2) = "Mar" stAry(3) = "Apr" stAry(4) = "May" stAry(5) = "Jun"
For cnt = 0 To 5 st = stAry(cnt) Next For cnt = 0 To 5 Debug.Print st Next End Sub
Option Explicit
Private st As String '(B)
Private cnt As Long
Sub GetZangyoList_Array3()
' Dim st As String’(A)
' Dim cnt As Long
Worksheets("残業2").Activate
Dim stAry(5) As String
stAry(0) = "jan"
stAry(1) = "Feb"
stAry(2) = "Mar"
stAry(3) = "Apr"
stAry(4) = "May"
stAry(5) = "Jun"
For cnt = 0 To 5
st = stAry(cnt)
' Debug.Print st'(C)
Next
For cnt = 0 To 5
Debug.Print st
Next
'For cnt = LBound(stAry) To UBound(stAry)'(D)
' st = stAry(cnt)
' Debug.Print st
' Next
End Sub
'(A)ローカル変数場合、stの値はJunのままになります。
'(B)モジュールレベル変数の場合でもstの値はJunのままになります。
'(C)(D)の場合、For Nex構文内ではstの配列の値は6種類表示されます。
'(質問)
'配列はを代入した値は変数の範囲にかかわらず、構文内でしか保持されないのかということです。
Option Explicit
Private st As String '(B)
Private cnt As Long
Sub GetZangyoList_Array3()
' Dim st As String’(A)
' Dim cnt As Long
' Dim st As String
' Dim cnt As Long
Worksheets("残業2").Activate
Dim stAry(5) As String
stAry(0) = "jan"
stAry(1) = "Feb"
stAry(2) = "Mar"
stAry(3) = "Apr"
stAry(4) = "May"
stAry(5) = "Jun"
For cnt = 0 To 5
st = stAry(cnt) '[*1]
' Debug.Print st'(C)
Next
'[*2]
For cnt = 0 To 5
' st = stAry(cnt)(E)
Debug.Print st '[*3]
Next
'For cnt = LBound(stAry) To UBound(stAry)'(D)
' st = stAry(cnt)
' Debug.Print st
' Next
End Sub
'(A)ローカル変数場合、stの値はJunのままになります。
'(B)モジュールレベル変数の場合でもstの値はJunのままになります。
'(C)(D)の場合、For Nex構文内ではstの配列の値は6種類表示されます。
'(E)の場合はstの配列の値は6種類表示されます。
'(質問1)
'配列のある要素の値は変数の範囲にかかわらず、構文内でしか保持されないのでしょうか。
'(質問2)
'従ってテキストP23,P24のプログラム内のFor Next構文内のstの値はJunのみでいいのでしょうか。
'(質問3)
'ならばテキストの文脈から考えて要素の値を調べる為のFor Next構文の意味がないのではないでしょうか。
'以上です。
受講生さんの投稿
(投稿ID: 4437)
Sub GetZangyoList_Array()
Dim st As String
Dim cnt As Long
Worksheets("残業3").Activate
Dim stAry(5) As String
stAry(0) = "jan"
stAry(1) = "Feb"
stAry(2) = "Mar"
stAry(3) = "Apr"
stAry(4) = "May"
stAry(5) = "Jun"
For cnt = 0 To 5
st = stAry(cnt)
Next
For cnt = 0 To 5
Debug.Print st
Next
End Sub
発展2 テキスト24P
この場合stにはjunのままでPrintされます。配列はFor Next構文内のみ有効で構文外は配列はたとえモジュール変数にしても数値は保持されないと考えてよいのでしょうか。尚、この場合はLBound 関数UBound関数を使用する必要があると考えてよいのでしょうか。
小川 慶一さんのコメント
(コメントID: 6098)
おひさしぶりです。
> 配列はFor Next構文内のみ有効で構文外は配列はたとえモジュール変数にしても数値は保持されないと考えてよいのでしょうか。
> 尚、この場合はLBound 関数UBound関数を使用する必要があると考えてよいのでしょうか。
質問の趣旨がわかりません。
「配列はFor Next構文内のみ有効で」からです。よって、後続するすべての文章が解釈しようがありません。なので、回答不能です。
ご自身でサンプルコードを書き、試したうえで、再度ご質問ください。
その際は、動作検証に使ったマクロをそれを含むエクセルファイルごと添付してください。
よろしくお願いします。
> 発展2の配列についての質問です。DVDにて講座購入済みです。
Sub GetZangyoList_Array()
Dim st As String
Dim cnt As Long
Worksheets("残業3").Activate
Dim stAry(5) As String
stAry(0) = "jan"
stAry(1) = "Feb"
stAry(2) = "Mar"
stAry(3) = "Apr"
stAry(4) = "May"
stAry(5) = "Jun"
For cnt = 0 To 5
st = stAry(cnt)
Next
For cnt = 0 To 5
Debug.Print st
Next
End Sub
> 発展2 テキスト24P
> この場合stにはjunのままでPrintされます。
> 配列はFor Next構文内のみ有効で構文外は配列はたとえモジュール変数にしても数値は保持されないと考えてよいのでしょうか。
> 尚、この場合はLBound 関数UBound関数を使用する必要があると考えてよいのでしょうか。
>
井上 聡さんのコメント
(コメントID: 6104) 添付ファイルのダウンロード権限がありません
よろしくお願いします。
小川 慶一さんのコメント
(コメントID: 6107)
コード、拝見しました。
以下のものですね。
コメント11266にあったコードとは違いますね。
コメント11266にあったコードのことは忘れて、今回いただいたコードだけを使って、コード下部にあった以下のご質問について回答しますね。
>(質問)
>配列はを代入した値は変数の範囲にかかわらず、構文内でしか保持されないのかということです。
...とできれば言いたいところなのですが、
「配列はを代入した値は」というのが「配列は」なのか「配列を」なのか分からないので、以前として回答不能です。
質問文を再整理してまた投稿してください。
また、以前からお伝えしていることですが、こういう推敲不足な質問文は極力送付されないようお願いします。
回答者にとって非常に負担です。そのことは、回答者にとっても、あなたにとっても、デメリットです。
回答者にとっては、前述のとおり、非常に負担です。
いちいちこういうことを書かなければならないからです。
あなたにとっても、何度もやりとりするコストが発生しますし、いちいちこんなこと言われたくないでしょう。
よろしくご協力ください。
> ファイルに内容を入力しました。
> よろしくお願いします。
井上 聡さんのコメント
(コメントID: 6110) 添付ファイルのダウンロード権限がありません
講座がガラパゴススタディーにあればよいのですが、別の通信講座で、AccessVBAのADOを勉強中です。配列が出てきて復習しています。
発展2のテキストの巻末に問題があります。質問してもよいのでしょうか。よいのであればその際はよろしくお願いします。
小川 慶一さんのコメント
(コメントID: 6111)
> 毎度申し訳ありません。朝が勉強時間なものでついチェックもれです。
くりかえしの失敗の理由としては弱いです。
であれば、たとえば、朝に質問をドラフトしても、すぐに投稿せず、半日~ひと晩置いて、改めて読み直してみることですね。
> 発展2のテキストの巻末に問題があります。質問してもよいのでしょうか。よいのであればその際はよろしくお願いします。
発展2の演習については、アンケート回答者限定で解答解説動画をさしあげています。
事務局からアンケートのURLを送付させますね。
添付ファイルは追って拝見します。
小川 慶一さんのコメント
(コメントID: 6112)
コメントを[*1], [*2], [*3]と付加しています。
[*1] が6回くり返されます。
実行する都度、
"jan"
"Feb"
"Mar"
"Apr"
"May"
"Jun"
と値が書き換わり、[*2]に来た段階では、stには"Jun"が入っている状態です。
その状態で、[*3]が6回くりかえされます。
Debug.Print st を何回くりかえしても、出力される値は"Jun"です。なぜなら、前述のとおり[*2]の段階で、stには"Jun"が入っている状態なのですから。
ということで:
[a]
上記[*1], [*2], [*3]にすぐに気づけないのは、前提となる基礎知識と実装能力、テスト遂行能力が著しく不足しているからです。
発展編2の内容云々の問題ではありませんので、基礎編の演習からやりなおしてください。
[b]
(質問1): 「構文」という言葉がどこからどこまでを指しているのかが分かりませんので回答不能です。
自分のこの質問が馬鹿げているということに気づけるレベルまで、基礎編、発展編1の演習をくりかえしてください。
[c]
(質問2): (質問1)であなたが立てた仮説に基づいた質問です。(質問1)が回答不能なため、連動して回答不能です。
[d]
(質問3): (質問2)であなたが立てた仮説に基づいた質問です。(質問2)が回答不能なため、連動して回答不能です。