Формула макроса R1C1 Excel, не сохраняющая значения

#excel #vba #excel-r1c1-notation

#excel #vba #excel-r1c1-нотация

Вопрос:

У меня есть макрос Excel, который создает новый лист Excel и заполняет его переменным количеством строк. У меня есть подсчет количества строк, хранящихся в переменной. Я использую формулу R1C1 для умножения двух ячеек вместе на основе моего количества строк. В макросе формула выглядит так, как будто она правильная (если я добавлю точку останова и прослежу за ней), но когда макрос завершается, формула в ячейке неверна.

VB-код для генерации формулы:

 MainSheet.Cells(RowCount   6, 6).FormulaR1C1 = "=R[" amp; RowCount   3 amp; "]C" amp; "*" amp; "R[" amp; RowCount   4 amp; "]C"
  

Просмотр формулы с точкой останова показывает следующее: «= R [430] C * R [431] C»
Фактические данные ячейки после завершения макроса: = F863* F864. Мне нужно, чтобы это было = F430 * F431

Комментарии:

1. Ответ Скотта Крейнерса дает вам решение. Помимо этого: всегда немного сложно иметь дело с формулами ячеек в VBA. Чтобы получить представление о том, что именно нужно вставить в свой код, сначала сделайте наоборот: напишите формулу в ячейке вручную, оставайтесь в этой ячейке, перейдите в VBA-Editor, откройте immediateWindow (Ctrl G) и введите ? activecell.Formula, activecell.FormulaR1C1

Ответ №1:

С помощью [] вы сообщаете vba, что вам нужно относительное позиционирование. Это означает, что это добавит (или вычтет) число в [] к текущей строке и / или столбцу, в которые помещается формула.

Удалите RowCount:

 MainSheet.Cells(RowCount   6, 6).FormulaR1C1 = "=R[3]C*R[4]C"