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

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

Тем не менее, исходные и конечные листы происходят из разных рабочих книг. Когда я копирую ячейки из источника в место назначения, идет проверка данных. Ячейки, вставленные в Destination, теперь ссылаются на ячейки в Source, чтобы заполнить их выпадающие списки. Ссылка обычно разрывается, прерывая раскрывающийся список и запрашивая пользователя при каждом открытии пункта назначения.

Что я хотел бы сделать, это скопировать значения в ячейках источника без копирования проверки данных. Как я уже говорил ранее, проверка данных одинакова на каждом листе (за исключением того, что они ссылаются на разные рабочие книги листов), поэтому все значения должны быть проверены в любом случае.

Вот пример моего кода для копирования:

Sub copyNoValidation(wkbDestination as ThisWorkbook, oRange as Range, cellDest As Range)
    wkbDestination.Worksheets("Source").Range(oRange).Copy
    cellDest.PasteSpecial xlPasteValues
End Sub

Спасибо за вашу помощь!

1 ответ1

0

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

Sub KopyPaste()
    Dim r1 As Range, r2 As Range
    Set r1 = Range("A1")
    Set r2 = Range("A2")
    r1.Copy r2
    r2.Validation.Delete
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .