Option Explicit
 
Dim sinFTime(1 To 5) As Single
Dim sinETime(1 To 5) As Single

 
Sub Speed_Test_Do_Loop()
 
    Dim i As Integer
    Dim ii As Integer
 
    With Application
 
        .ScreenUpdating = False
 
        With .ActiveSheet
 
            For i = 3 To 13
 
                Call Test1
                Call Test2
                Call Test3
                Call Test4
                Call Test5
 
                For ii = 1 To 5
 
                    .Cells(i, ii + 1).Value = sinETime(ii)
 
                Next ii
 
            Next i
 
        End With
 
        .ScreenUpdating = True
 
    End With
 
End Sub

 
Private Sub Test1()
 
    Dim i As Long
 
    sinFTime(1) = Timer
 
    Do While i < 30000001
 
        i = i + 1
 
    Loop
 
    sinETime(1) = Timer - sinFTime(1)
 
End Sub

 
Private Sub Test2()
 
    Dim i As Long
 
    sinFTime(2) = Timer
 
    Do
 
        i = i + 1
 
    Loop While i < 30000001
 
    sinETime(2) = Timer - sinFTime(2)
 
End Sub

 
Private Sub Test3()
 
    Dim i As Long
 
    sinFTime(3) = Timer
 
    Do Until i = 30000000
 
        i = i + 1
 
    Loop
 
    sinETime(3) = Timer - sinFTime(3)
 
End Sub

 
Private Sub Test4()
 
    Dim i As Long
 
    sinFTime(4) = Timer
 
    Do
 
        i = i + 1
 
    Loop Until i = 30000000
 
    sinETime(4) = Timer - sinFTime(4)
 
End Sub

 
Private Sub Test5()
 
    Dim i As Long
 
    sinFTime(5) = Timer
 
    Do
 
        i = i + 1
 
        If i = 30000000 Then Exit Do
 
    Loop
 
    sinETime(5) = Timer - sinFTime(5)
 
End Sub