Основной причиной вашей ошибки является то, что CDbl
ожидает числовое значение или строку, которая выглядит как число. Сама строка "=RAND() * 0.3 + 0.35"
не выглядит как число, даже если она оценивает как число.
Чего вы на самом деле пытаетесь достичь здесь?
Если для получения длинного целого результата по формуле = RAND () * 0,3 + 0,35, используйте
Dim w as Long
w = Rnd() * 0.3 + 0.35
Если для эмуляции формулы ячейки используется
Dim w as Long
w = Application.Evaluate("=RAND() * 0.3 + 0.35")
Что касается самой формулы, то почему эта конструкция? Он вернет Single в диапазоне [0.35, 0.65), который при округлении до Long вернет 0 или 1 с вероятностью 50% каждого.
Почему бы не использовать
w = Rnd()
или
w = Application.Evaluate("=RAND()")
или
w = Application.WorksheetFunction.RandBetween(0, 1)
или есть какая-то другая причина, по которой я скучал?