После написания кода MACRO - Формула дает синтаксическую ошибку времени компиляции. Без макроса работает нормально - PullRequest
1 голос
/ 08 октября 2019

У меня есть формула

- 
=IF(K2="Missed KPI",IF(J2<>"null","Entry done after approx. "&ROUNDDOWN(NETWORKDAYS(F2,J2)-1-MOD(F2,1)+MOD(J2,1),0)&" work days"),IF(K2="Milestone Pending-Missed",IF(F2<>"null","Entry
-after"&ROUNDDOWN(NETWORKDAYS(F2,NOW())-1-MOD(F2,1)+MOD(NOW(),1),0)&" work days ago"," "),IF(K2="NA","Entry yet to be done-Order Not Raised- "&H2," ")))

Здесь: K2, J2, F2, H2 - это имена ячеек

Когда я использую эту формулу без написания макроса, она работает правильно. У меня есть много других подобных формул, все работают правильно без MACRO. Когда я записываю MACRO (не кодирую в VBA), когда я пытаюсь запустить MACRO, он выдает мне время компиляции - синтаксическая ошибка.

В приведенной ниже строке указан код VBA (созданный во время записи MACRO) для приведенной выше формулы.

Selection.FormulaR1C1 = _
    "=IF(RC[-2]=""Missed KPI"",IF(RC[-3]<>""null"",""Entry done after approx. ""&ROUNDDOWN(NETWORKDAYS(RC[-7],RC[-3])-1-MOD(RC[-7],1)+MOD(RC[-3],1),0)&"" work days""),IF(RC[-2]=""Milestone Pending-KPI Missed"",IF(RC[-7]<>""null"",""Entry - after ""&ROUNDDOWN(NETWORKDAYS(RC[-7],NOW())-1-MOD(RC[-7],1)+MOD(NOW(),1),0)&"" work days ago"","" ""),IF("& _
    ""NA"",""CCD yet to be done-Order Not Raised- ""&RC[-5],"" "")))

"

Как вы видите, VBA добавил несколько дополнительных двойных кавычек, а также некоторый текст из кода также отсутствует после записи MACRO.

Пожалуйста, помогите мне с решением, так как я застрял здесь и не знаю, почему моя формула не работает.

Для небольшой однострочной формулы она работает нормально, но как только формула переходит на другую строку в VBA (после записи MACRO), что-то не так.

Для этой формулы -

=IF(K2="Approaching Deadline",(24-(NETWORKDAYS(F2,NOW())-1-MOD(F2,1)+MOD(NOW(),1))*24)/24," ")

Записана версия VBA (которая находится в одной строке в коде VBA)

Selection.FormulaR1C1 = _
         "=IF(RC[-1]=""Approaching Deadline"",(24-(NETWORKDAYS(RC[-6],NOW())-1-MOD(RC[-6],1)+MOD(NOW(),1))*24)/24,"" "")"

Работает нормально.

Я пытался работать с цитатами и несколькимиРазрыв строки. Все еще не работает.

1 Ответ

0 голосов
/ 08 октября 2019

По какой-то причине в записанном коде отсутствует ссылка на ячейку. Есть также некоторые пропущенные кавычки и пробелы (например, оператору & необходимо иметь пробел до и после его работы). Попробуйте этот исправленный код:

Selection.FormulaR1C1 = _
"=IF(RC[-2]=""Missed KPI"",IF(RC[-3]<>""null"",""Entry done after approx. ""&ROUNDDOWN(NETWORKDAYS(RC[-7],RC[-3])-1-MOD(RC[-7],1)+MOD(RC[-3],1),0)&"" work days""),IF(RC[-2]=""Milestone Pending-KPI Missed"",IF(RC[-7]<>""null"",""Entry - after ""&ROUNDDOWN(NETWORKDAYS(RC[-7],NOW())-1-MOD(RC[-7],1)+MOD(NOW(),1),0)&"" work days ago"","" ""),IF(" & _
"RC[-2]=""NA"",""CCD yet to be done-Order Not Raised- ""&RC[-5],"" "")))"

Обратите внимание, что эта формула приведет к нежелательным результатам, если ваш Selection находится между столбцами A и G. Его можно правильно использовать только начиная со столбца H.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...