機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA > VBA高速化テクニック

文字列型関数を使う



VBAで文字列を操作するケースはよくあります。文字列操作でおなじみに関数といえば、Left、Right、Midでしょう。しかし、これらの文字列操作関数には関数名の末尾に「$」が付くLeft$、Right$、Mid$があるのをご存じですか?今回は、この「$」ありと「$」なし関数による速度の違いを検証してみます。

Sub Test1()
    Dim buf As String, i As Long
    For i = 1 To 5000000
        buf = Mid("Office TANAKA", 4, 5)
    Next i
End Sub

Sub Test2()
    Dim buf As String, i As Long
    For i = 1 To 5000000
        buf = Mid$("Office TANAKA", 4, 5)
    Next i
End Sub

 Test1Test2%
1回目00:0500:0240.0%
2回目00:0600:0350.0%
3回目00:0500:0240.0%
4回目00:0600:0350.0%
5回目00:0600:0233.3%
6回目00:0500:0360.0%
7回目00:0600:0350.0%
8回目00:0500:0240.0%
9回目00:0600:0350.0%
10回目00:0500:0240.0%
平均00:0500:0345.3%
Mid関数よりMid$関数の方が約50%高速です。それには理由があります。$なしのMid関数などは、ヘルプに「バリアント型 (内部処理形式 String の Variant) の値を返します」と明記されています。対して末尾に$が付くMid$関数などは「文字列型」を返すんです。バリアント型と文字列型、どちらが高速はおわかりですよね。



このエントリーをはてなブックマークに追加