Sub GetZangyoList_Array_GetList()
Worksheets("残業3").Activate
Dim stAry(5) As String
Dim cnt As Long
For cnt = 0 To 5
stAry(cnt) = Range("I2").Offset(cnt).Value
Next
Dim st As String
For cnt = 0 To 5
st = stAry(cnt)
Range("B1").Offset(, cnt).Value = st
Range("B2:B14").Offset(, cnt).Value = Worksheets(st).Range("C3:C15").Value
Next
End Sub
について st = stAry(cnt)と一度変数stに置き換えてから書きだしていますが、 For cnt = 0 To 5 Range("B1").Offset(, cnt).Value = stAry(cnt) Range("B2:B14").Offset(, cnt).Value = Worksheets(stAry(cnt)).Range("C3:C15").Value Next にしてもうまく実行されます。 変数に置き換えるメリットがあれば教えてほしいです。
2019/06/06 14:43
小川慶一さんのコメント
(コメントID: 6201)
受講生 さん:
おもしろい質問、ありがとうございます。
>変数に置き換えるメリットがあれば教えてほしいです。
実務上のメリットはありません。
一方、講義では、入れ子構造が増えると受講生にとって理解が難しくなるので、極力、入れ子構造のままのプログラムを使った解説はしないようにしています。 ここでは、その意味もあり、あえて stAry(cnt) の値を st に代入してから話を進めています。
Sub sample1()
Dim s As String
Dim i As Integer
s = Range("B2").Value
i = InStr(s, "都")
Range("C2").Value = Left(s, i)
End Sub
Sub sample2()
Dim s As String
s = Range("B2").Value
Range("C2").Value = Left(s, InStr(s, "都"))
End Sub
Sub sample3()
Range("C2").Value = Left(Range("B2").Value, InStr(Range("B2").Value, "都"))
End Sub
>
Sub GetZangyoList_Array_GetList()
> Worksheets("残業3").Activate
>
> Dim stAry(5) As String
> Dim cnt As Long
> For cnt = 0 To 5
> stAry(cnt) = Range("I2").Offset(cnt).Value
> Next
>
> Dim st As String
> For cnt = 0 To 5
> st = stAry(cnt)
> Range("B1").Offset(, cnt).Value = st
> Range("B2:B14").Offset(, cnt).Value = Worksheets(st).Range("C3:C15").Value
> Next
> End Sub
> > について > st = stAry(cnt)と一度変数stに置き換えてから書きだしていますが、 > For cnt = 0 To 5 > Range("B1").Offset(, cnt).Value = stAry(cnt) > Range("B2:B14").Offset(, cnt).Value = Worksheets(stAry(cnt)).Range("C3:C15").Value > Next > にしてもうまく実行されます。 > 変数に置き換えるメリットがあれば教えてほしいです。
受講生さんの投稿
(投稿ID: 4501)
について
st = stAry(cnt)と一度変数stに置き換えてから書きだしていますが、
For cnt = 0 To 5
Range("B1").Offset(, cnt).Value = stAry(cnt)
Range("B2:B14").Offset(, cnt).Value = Worksheets(stAry(cnt)).Range("C3:C15").Value
Next
にしてもうまく実行されます。
変数に置き換えるメリットがあれば教えてほしいです。
小川慶一さんのコメント
(コメントID: 6201)
おもしろい質問、ありがとうございます。
>変数に置き換えるメリットがあれば教えてほしいです。
実務上のメリットはありません。
一方、講義では、入れ子構造が増えると受講生にとって理解が難しくなるので、極力、入れ子構造のままのプログラムを使った解説はしないようにしています。
ここでは、その意味もあり、あえて stAry(cnt) の値を st に代入してから話を進めています。
たとえば、以下では、パフォーマンスを考えたら、変数に置き換えるメリットはないので、sample2のコードのほうがsample1のコードより好ましいです。
ですが、Instr関数について解説するためのコードとしては、sample1のコードのほうがsample2のコードより好ましいです。
>
>
> について
> st = stAry(cnt)と一度変数stに置き換えてから書きだしていますが、
> For cnt = 0 To 5
> Range("B1").Offset(, cnt).Value = stAry(cnt)
> Range("B2:B14").Offset(, cnt).Value = Worksheets(stAry(cnt)).Range("C3:C15").Value
> Next
> にしてもうまく実行されます。
> 変数に置き換えるメリットがあれば教えてほしいです。