Скопируйте и вставьте формулу, используя VBA: возвращая #REF! вместо ссылочной ячейки - PullRequest
2 голосов
/ 07 октября 2019

Я довольно новичок в VBA ... Я создал отчет и макрос, но застрял при копировании и вставке формулы с одного листа на другой.

Это часть кода, с которой у меня возникают проблемыс ...

Worksheets("Data Checks").Range("B11").Copy Worksheets("Items By Location").Range("Y2")

Поэтому я хотел бы скопировать следующую формулу из Worksheets("Data Checks").Range("B11") в Worksheets("Items By Location").Range("Y2")

Формула выглядит следующим образом ...

=OR(LEFT('Items By Location'!D2, 4)="JV05", LEFT('Items By Location'!D2, 4)="JVAW",  LEFT('Items By Location'!D2, 5)="HARHW")

Но когда макрос запускается, он вставляется как ...

=OR(LEFT('Items By Location'!#REF!, 4)="JV05", LEFT('Items By Location'!#REF!, 4)="JVAW",  LEFT('Items By Location'!#REF!, 5)="HARHW")

Мне нужно сохранить «D2», который затем будет автоматически заполнен до конца отчета.

Я знаю, что может быть проще набрать формулу, но я бы хотел, чтобы эта формула была исправляемой, не вдаваясь в VBA.

Любая помощь или идеи будут высоко оценены

Большое спасибо Харви

Ответы [ 2 ]

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

Если вы скопируете ячейку, формула изменится, так как это относительная ссылка. Чтобы избежать этого, присвойте строку формулы непосредственно от одного к другому:

Worksheets("Items By Location").Range("Y2").Formula = Worksheets("Data Checks").Range("B11").Formula
0 голосов
/ 07 октября 2019

Этот код должен делать то, что вы пытаетесь достичь:

Worksheets("Items By Location").Range("Y2").Formula = Worksheets("Data Checks").Range("B11").Formula

Это также будет немного более эффективным.

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