Вставить формулу в ячейку с помощью VBA?

#excel #vba

#excel #vba

Вопрос:

Я пытаюсь вставить формулу в ячейку с помощью vba. Эта формула должна иметь ссылки на activecell.диапазон строк или динамическую ссылку.

Я использую следующий код vba:

 Range("P" amp; ActiveCell.Row).Formula = "=IF(OR(G amp; ActiveCell.Row <>"",""H"" amp; ActiveCell.Row <>"",""I"" amp; ActiveCell.Row <>"",""J"" amp; ActiveCell.Row <>"",""M"" amp; ActiveCell.Row <>""),TODAY(),"")"
 

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

Ответ №1:

предполагая, что вам нужна эта формула:

 =IF(OR(G1<>"",H1<>"",I1<>"",J1<>"",M1<>""),TODAY(),"")
 

Попробуйте это

 Range("P" amp; ActiveCell.Row).Formula = "=IF(OR(G" amp; ActiveCell.Row amp; "<>"""",H" amp; ActiveCell.Row amp; "<>"""",I" amp; ActiveCell.Row amp; "<>"""",J" amp; ActiveCell.Row amp; "<>"""",M" amp; ActiveCell.Row amp; "<>""""),TODAY(),"""")"
 

Ответ №2:

Я бы использовал R1C1 обозначения и CountA() немного упростил

 Range("P" amp; ActiveCell.row).FormulaR1C1 = "=if(counta(RC7:RC10,RC13)>0,Today(),"""")"
 

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

1. @M.Doe, ты справился с этим?

2. @M.Doe, было бы неплохо, если бы вы давали правильные отзывы людям, пытающимся вам помочь. Спасибо

Ответ №3:

Я думаю, что проблема в двойных кавычках. У вас есть:

 ...).Formula = "=IF(OR(G amp; ActiveCell.Row <>"",""H"" amp; ActiveCell..."
 

Хотя это должно быть:

 ...).Formula = "=IF(OR(G amp; ActiveCell.Row <>"""",""""H"""" amp; ActiveCell..."
 

Помните: в строке, заключенной в -«- chars , любое появление одного и того же символа в строке должно быть удвоено.

Хотя я не проверял это, но я совершенно уверен, что это ошибка (возможно, не ошибка).

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

1. спасибо, я попробовал это предложение, но все равно получаю ту же ошибку.