优化For ... Select Case中的Next循环

时间:2016-07-12 12:57:47

标签: excel-vba excel-2013 vba excel

我在一些代码中有三个不同的CASE s,每个代码都围绕一个For...Next循环的例程有微小的变化。问题是,效率和速度有什么不同,这取决于我如何嵌套它们?

换句话说,是:

Select Case sPosition
    Case Is = "First"
        For j = 17 to 65
            [Do stuff]
        Next j
    Case Is = "Middle"
        For j = 17 to 65
            [Do stuff]
        Next j
    Case Is = "Last"
        For j = 17 to 65
            [Do stuff]
        Next j
End Select

......效率高于或低于:

For j = 17 to 65
    Select Case sPosition
        Case Is = "First"
            [Do stuff]
        Case Is = "Middle"
            [Do stuff]
        Case Is = "Last"
            [Do stuff]
    End Select
Next j

2 个答案:

答案 0 :(得分:3)

CodeReview比SO更多的问题,但无论如何,它取决于你打算用循环做什么。在第一种情况下,您有一个条件,然后根据条件的结果循环遍历数据,对所有数据执行相同的操作。在第二种情况下,每次循环运行时都要重新检查条件。如果您认为循环运行时会发生不同的事情(选择不同的案例),那么您需要使用第二个变体,但如果检查的条件没有变化,那么第一个选项会更快,因为条件只是检查一次循环

答案 1 :(得分:1)

我认为第一个变体更有效,因为选择案例只能工作一次,而第二个变体选择案例适用于cicle的每一步(49次)