標準のプロパティ


セルの値は Value プロパティで表されます。

Range("A1").Value = "tanaka"
MsgBox Range("A1").Value

セル(Rangeオブジェクト)の標準プロパティは Value です。したがって、Value だったら省略できます。逆に言えば、省略したら Value です。つまり、上記のコードは

Range("A1") = "tanaka"
MsgBox Range("A1")

と同じ結果になります。「Value は省略できます」とセミナーで教えると、決まって数人の方から「どっちがいいんですか?書いた方がいいんですか?省略した方がいいんですか?」と聞かれます。まぁ、気持ちは分かりますけどね。プログラミングに○×はないんですよね。どっちでもいいんです。唯一大事なことは自分で考えるということですな。

ということで、ここでは Value を付けたときと省略したときで、速度に差が出るか検証してみましょうか。

Sub Test1()
    Dim i As Long
    For i = 1 To 20000
        Cells(i, 1).Value = Cells(i, 2).Value
    Next i
End Sub
Sub Test2()
    Dim i As Long
    For i = 1 To 20000
        Cells(i, 1) = Cells(i, 2)
    Next i
End Sub
Valueあり Valueなし %
1 0.813 0.734 90.3%
2 0.828 0.719 86.8%
3 0.812 0.735 90.5%
4 0.813 0.734 90.3%
5 0.828 0.703 84.9%
6 0.812 0.734 90.4%
7 0.828 0.734 88.6%
8 0.828 0.719 86.8%
9 0.813 0.719 88.4%
10 0.906 0.718 79.2%
平均 0.828 0.725 87.5%

あんまり変わりませんね。この程度の差だったら、どっちでもいいですね。速度のことよりも、可読性とか見栄えとか、そのマクロに対する考え方によって Value を付けるかどうかを決めた方がいいですね。