Доброго времени суток, коллеги!
Есть вот такая часть кода: zn1 = 0: zn2 = 0
zn1 = .Cells(CLng(arrNakopL(0, i)), 10).Value
zn2 = .Cells(CLng(arrNakopL(0, i)), 9).Value
With .Cells(CLng(arrNakopL(0, i)), 10)
.NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "
.FormulaR1C1 = zn1 + zn2
End With
в ячейку .Cells(CLng(arrNakopL(0, i)), 10) пишется результат вычисления .FormulaR1C1 = zn1 + zn2
т.е. число, ну например 700, где соответственно: zn1 = 100, а zn2 = 600.
А хотелось бы, что бы в ячейку писалась формула вида: =100+600
Пытался записать так: .FormulaR1C1 = "=" & zn1 & "+" & zn2
- выдает ошибку.
Помогите, пожалуйста, разобраться: что я делаю неправильно?
Всем откликнувшимся, заранее Спасибо!
PS: Если не угадал с названием темы - подскажите как народу будет удобнее. Поправлю.
Здравствуйте.
Какую именно ошибку? у меня нормально отработало с вариантом
.FormulaR1C1 = "=" & zn1 & "+" & zn2
Правда, вместо массива CLng(arrNakopL(0, i)) использовала просто индекс i
Может, дело в массиве?
Дело не в массиве, а в хотелке. Нужна не формула со ссылками, а текст в ячейке, показывающий числовые аргументы формулы
"=" & zn1 & "+" & zn2
Если моя версия соответствует желаемому, то так и следует переименовать тему
Большущее спасибо Вам, друзья!
Я, как-то, увлеченный проектом, не заметил того, что не всем будет понятно - для чего я в координату ячейки "приплел" массив. Дело в том, что по задумке я в двумерный массив собираю номер строки и значение, которое затем обрабатываю (увеличиваю на заданную величину, которую так же рассчитываю, как сумму значений массива деленную на количество значений массива) и что бы не искать, каждый раз номер строки я его храню в поле массива. Должно быть запутанно объяснил, но это работает!
А для того, что бы была возможность просмотреть "детали" вычисления (промежуточные по - шаговые результаты) мне и нужно, что бы в ячейке были вписаны "числовые аргументы формулы".
С Вашей помощью все заработало!
zn1 = "": zn2 = "" 'присваиваем "пусто" текстовым переменным
zn1 = .Cells(CLng(arrNakopL(0, i)), 9).Formula 'в переменную числовые аргументы формулы
zn2 = CStr(Round(CDbl(arrNakopL(1, i)) * koef, 2))
With .Cells(CLng(arrNakopL(0, i)), 9) 'в ячейку (nR,9)
.NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 " ' с принудительно заданным числовым форматом
'.FormulaR1C1Local = "=ОКРУГЛ(" & zn1 & "+" & zn2 & "; 2)" ' заготовка
.FormulaR1C1Local = "=" & zn1 & "+" & zn2 ' результат вычислений, как числовые аргументы формулы
End With
zn1 = "" 'присваиваем "пусто" текстовой переменной
zn1 = .Cells(CLng(arrNakopL(0, i)), 10).Formula 'в переменную числовые аргументы формулы
zn1 = Replace(zn1, "=", "", 1, 1, vbTextCompare) ' "чистим" строковую переменную от ведущего знака "="
With .Cells(CLng(arrNakopL(0, i)), 10) 'в ячейку (nR,10)
.NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 " ' с принудительно заданным числовым форматом
.FormulaR1C1Local = "=" & zn1 & "+" & zn2 ' результат вычислений, как числовые аргументы формулы
End With
zn1 = "": zn2 = "" 'присваиваем "пусто" текстовым переменным
Ну, вот так реализовалась эта "хотелка", как сказал, уважаемый vikttur.
Может кому то пригодится.