本論には関係ないですが、Function NoColor
と書かれていますが、Functionの形になってません。(値を設定していない)
Sub プロシージャとして作成されるべきだと思います。
それで、↓のようなテストプログラムを作成して、Excel2010とExcel2013 で比較してみました。
対象が1000くらいだとどちらにしろ一瞬で、違いが分かりませんでしたが、10000にすると確かに多少2013の方が遅いのが目視で確認できました。(一応違いが判る程度です)
ただ、これですと極端に遅いと言う話にはならないと思ったのですが、一つ思い当たるのは私の環境ではExcel2013のアニメーションを殺しています。
このアニメーションが”遅い”と言う原因であるとすると、VBAの処理の最初で、
Application.ScreenUpdating=False
として、画面の更新を止め、最後で
Application.ScreenUpdating=True
で戻せば改善されるかもしれません。
参考まで。
なお、蛇足ですが極端に遅いとおっしゃっても、具体的にどのくらいなのか第三者にはわかりません。
例えば私のテストプログラムを2010と2013で比較して、「2010だと一瞬だが、2013だと5秒くらいかかる」
とか具体的に示された方がよろしいかと思います。
Sub NoColor(ByVal ColorRange As Range, ByVal ColorNo As Variant)
ColorRange.Interior.ColorIndex = ColorNo
End Sub
Sub main()
With ActiveSheet
For I = 1 To 10000
NoColor .Cells(I, 1), 6
Next
For I = 1 To 10000
NoColor .Cells(I, 1), xlNone
Next
End With
End Sub