Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32516 / 76734 ←次へ | 前へ→

【49454】If と Select の使い分けについて
質問  多摩川  - 07/6/5(火) 15:54 -

引用なし
パスワード
   皆さま,こんにちは。

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 を使おうと判断したのですが,どちらを使用する方が適切なのでしょうか?
今回の疑問に関わらず,マクロを作成するうえで処理速度優先の考え方で良いのでしょうか?


長々と失礼しました。
変な質問ですが,どなたかアドバイスをいただけないでしょうか?
よろしくお願いいたします。

3 hits

【49454】If と Select の使い分けについて 多摩川 07/6/5(火) 15:54 質問
【49460】Re:If と Select の使い分けについて Kein 07/6/5(火) 18:35 発言
【49475】Re:If と Select の使い分けについて 多摩川 07/6/6(水) 8:11 お礼

32516 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free