セルの値は 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 を付けるかどうかを決めた方がいいですね。