VBA速度検証2 Applicationオブジェクトを使うとむちゃ遅くなる!
2016/06/11
[ad#top-1]
VBAにApplicationオブジェクトという機能があって、これはExcelの関数が使える便利なオブジェクトなのです。
Application.Max
Application.Min
Application.Round
など。
便利は便利なのですが、この機能を使うと無茶苦茶遅くなるということを知っておきましょう。
検証のために次のようなマクロを作ってみました。最後にC3セルに処理時間が現れるようになっています。RoundUpというのは繰上げの関数です。
Sub 関数()
time1 = Now()
For i = 0 To 1000000
a = Application.RoundUp(i * 1.1132, 0)
Next i
Range(“C3”) = Now() – time1
End Sub
次に、以下のマクロも処理時間を計測しました。RoundUp関数をマクロで自作したのがRoundUpFncです。
Sub 関数()
time1 = Now()For i = 0 To 1000000
a = RoundUpFnc(i * 1.1132, 0)
Next i
Range(“C3”) = Now() – time1
End Sub
Function RoundUpFnc(数値, 桁)
result = 数値 * (10 ^ 桁)
result = result + 0.999999999999999
result = Int(result)
resunt = result / (10 ^ 桁)
RoundUpFnc = resunt
End Function
【結果】
Excel関数 | 自作関数 |
10秒 | 1秒 |
なんと、10倍もの差が出ています。
使い勝手がいいからって、安易にApplicationオブジェクトを使うもんじゃないですね!
[ad#ad-1]
スポンサーリンク