Скопировать лист с комбинированными полями

У меня есть рабочий лист, который копируется и вставляется в новый рабочий лист, когда пользователь нажимает кнопку. Мне удалось скопировать все на листе (фигуры, кнопки и т. Д.), За исключением комбинированных полей, которые содержат выпадающие списки с использованием именованных диапазонов (которые создаются с помощью следующего кода: http://www.contextures.com/xlDataVal11 .html ).

Я попытался записать макрос для этого и получил следующее (упрощенное)

ActiveSheet.Shapes.Range(Array("ExampleCombo")).Select Selection.Copy ActiveSheet.Paste 

При этом я понял, что поле со списком рассматривается как форма. Чтобы скопировать все поля со списком и поместить их в нужное положение на новом листе, я попробовал следующее:

  Sub CopyCombos () Dim ws_new As Worksheet Dim ws_old As Worksheet Dim Special_Shape As Shape Dim Special_Shape_COPY As Shape Dim Position_Left As Single Dim Position_Top As Single Dim Position_Width As Single Dim Position_Height As Single Set ws_old = ActiveSheet ActiveWorkbook.Worksheets.Add Set ws_new = ActiveSheet For Each Special_Shape In ws_old.Shapes 'Copy position Position_Left = Special_Shape.Left Position_Top = Special_Shape.Top Position_Width = Special_Shape.Width Position_Height = Special_Shape.Height 'Copy Special_Shape.Copy 'Paste ws_new.Paste '<=== Here's the problem! But why? 'Rename Set Special_Shape_COPY = Selection 'Put in right place Special_Shape_COPY.Left = Position_Left Special_Shape_COPY.Top = Position_Top Special_Shape_COPY.Width = Position_Width Special_Shape_COPY.Height = Position_Height Next Special_Shape End Sub 

Я получаю сообщение об ошибке «Не могу войти в режим прерывания в это время» непосредственно после вставки поля со списком в новый рабочий лист. Как я могу это решить?

Скорее, чем:

  Set ws_old = ActiveSheet ActiveWorkbook.Worksheets.Add Set ws_new = ActiveSheet 

и делая копии, используйте:

 ActiveSheet.Copy After:=Sheets(Sheets.Count) 

Это даст полную копию:

  1. строки
  2. ячейки
  3. Объекты и т. Д.

Ответ ученика Гэри, чтобы скопировать рабочий лист, отлично работал при копировании его в пределах одной и той же книги:

 ActiveSheet.Copy After:=Sheets(Sheets.Count) 

Однако это вызывает проблему при копировании листа в другую (новую) книгу, поскольку формат отличается по цвету. Чтобы решить эту проблему, я использовал следующий код перед добавлением новой книги:

 Workbooks.Add Template:="Workbook" 
  • Проблема с копированием данных с одного листа на другой
  • Присоединение к трем частям кода «Открыть диалоговое окно» «Вырезать и вставить» и «Разбить колонку»
  • Excel VBA - ошибка выделения выреза
  • Макрос Excel - вставка выделения в Word
  • Скопируйте и вставьте в последнюю строку, Ошибка 91
  • Заказ Datagridview.SelectedCells
  • Копировать диапазон в excel, найти определенный текст в документе MSWord, заменить на изображение в буфере обмена
  • excel-VBA: копирование последнего столбца с динамическими путями и именами
  • Скопируйте, вставьте Excel в PPT. Ничего в буфере обмена
  • Найдите конкретный заголовок столбца, скопируйте столбец и вставьте в другую книгу
  • скопировать диапазон папок в первую пустую колонку в excel vba
  • Interesting Posts

    Как открыть файл csv в Microsoft Excel в Python?

    Формула для оценки, основанная на том, как распределены равномерно 5 групп

    Excel – подсчет строк, значения которых удовлетворяют сложному условию без вспомогательного столбца

    Продукт ячеек с изменением номера строки

    Powershell: извлечение списка IP-адресов, разделенных запятыми?

    Написание IF Condition с 2 или более столбцами в excel

    Макрос не запускается после изменения пути

    Ежедневно Oracle SQL вставляется из электронной почты

    Отправка по электронной почте раздела листа Excel в электронном письме в виде вложения PDF с помощью кнопки

    Запрос экспорта экспорта Excel из Access

    format excel, чтобы показать, что десятичные числа заканчиваются нулем VB

    excel vba нуждается в контроле, который проверяет, является ли пустая ячейка

    Добавление разделения к текущей формуле

    VBA: Как вернуть ссылку на ячейку из переменной, которая ищет значение?

    Vb.net: Word Table to Excel Data Transfer Issue

    Давайте будем гением компьютера.