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