|
皆さま,こんにちは。
1つの変数(「n」とします)が条件によって
n = 1 になったり,
n = 2 になったりするとします。
この n の値によって呼び出すプロシージャが異なるとします。
この場合,
If n = 1 Then
Call aaa
ElseIf n = 2 Then
Call bbb
End If
だったり,
Select Case n
Case 1
Call aaa
Case 2
Call bbb
End Select
とも表すことができると思います。
今,実際に作成中のマクロは,Call ステートメントだけではなく,前後にも色々書かれた長文です。
できるだけ少ない行数にしたいので If の方で進めようと思ったのですが,処理速度も重要と思い,以下のようなテスト行いました。
Sub test1()
Dim st() As Double
Dim i As Long
Dim n As Long
Dim j As Long
Dim m As Long
n = 1
m = 1
With ThisWorkbook.Sheets(1)
.Cells(1, 1).Value = "Ifの場合"
.Cells(1, 2).Value = "Selectの場合"
For j = 1 To 10
ReDim Preserve st(m): st(m) = Timer
If n = 1 Then
For i = 1 To 10000
.Cells(1 + j, 1).Value = _
.Cells(1 + j, 1).Value + i
Next i
End If
.Cells(1 + j, 1) = Timer - st(m)
m = m + 1
ReDim Preserve st(m): st(m) = Timer
Select Case n
Case 1
For i = 1 To 10000
.Cells(1 + j, 2).Value = _
.Cells(1 + j, 2).Value + i
Next i
End Select
.Cells(1 + j, 2) = Timer - st(m)
m = m + 1
Next j
End With
End Sub
結果的には If の方が処理時間も短く,少ない行数で収まるため,今回は If を使おうと判断したのですが,どちらを使用する方が適切なのでしょうか?
今回の疑問に関わらず,マクロを作成するうえで処理速度優先の考え方で良いのでしょうか?
長々と失礼しました。
変な質問ですが,どなたかアドバイスをいただけないでしょうか?
よろしくお願いいたします。
|
|