Каждый программист VBA попадает в эту ловушку. В этом объявлении
Dim x, y, z As Integer
Dim m, n, p As Double
x, y, m, n объявляются как Variant
, и тогда VBA будет определять тип во время выполнения. Объявите переменные следующим образом:
Dim x As Long, y As Long, z As Long
Dim m As Double, n As Double, p As Double
, снова запустите тест и дайте мне знать результат:)
+ 1: объявите целые числа как Long
. Можно подумать, что вы можете сэкономить память, используя только 2 байта для целого числа, но это функция совместимости, и VBA в любом случае преобразует их в long во время выполнения.