シートを特定するとき
Sheets(1)
Sheets("Sheet1")
という2通りの書き方ができます。このとき、Sheets("Sheet1") と名前を指定するよりも、インデックス値を使って Sheets(1) の方が速いですよ、という話です。確かに昔はそうでした。現在ではどうでしょう。次のコードで試してみます。
Sub Test1() Dim i As Long, A As String For i = 1 To 1000 Sheets(1).Name = Sheets(1).Name Next i End Sub
Sub Test2() Dim i As Long, A As String For i = 1 To 1000 Sheets("Sheet1").Name = Sheets("Sheet1").Name Next i End Sub
回 | Index | Name | % |
---|---|---|---|
1 | 2.937 | 2.954 | 100.6% |
2 | 2.828 | 3.234 | 114.4% |
3 | 2.844 | 2.859 | 100.5% |
4 | 2.844 | 2.860 | 100.6% |
5 | 2.844 | 2.985 | 105.0% |
6 | 2.906 | 3.437 | 118.3% |
7 | 3.312 | 3.156 | 95.3% |
8 | 3.047 | 3.250 | 106.7% |
9 | 3.000 | 3.703 | 123.4% |
10 | 3.219 | 6.406 | 199.0% |
平均 | 2.978 | 3.484 | 117.0% |
うむ、確かにちょこっとだけ速いですけど、気にするような違いではありませんね。そもそも Sheets(i) のようにインデックスでシートを指定するときは、そうすべき理由があるからです。だったら、よしんば遅くたってしかたないです。両者の違いは、単純に速度差だけで決められることではありませんね。