Копировать элементы с одной страницы на другую в многостраничном режиме с помощью VBA в Excel

У меня есть многостраничность в пользовательской форме. Во время выполнения пользователь может в любое время добавить x страниц. Элементы каждой страницы будут одинаковыми. Мне интересно, есть ли способ дублировать эти элементы, или мне нужно будет заново создавать эти же элементы для каждой новой страницы? Если да, то как указать места на странице, где должен быть размещен элемент?

введите здесь описание изображения


person Ehudz    schedule 30.05.2012    source источник
comment
Вы можете продублировать их, скопировав и вставив или создав с нуля.   -  person Siddharth Rout    schedule 30.05.2012


Ответы (2)


Хитрость заключается в том, чтобы поместить все элементы управления в рамку на 1-й странице, а затем все становится проще :)

Этот код скопирует элементы управления из Page1 в Page2 после создания Page2 и выровняет их соответствующим образом.

Option Explicit

Private Sub CommandButton2_Click()
    Dim l As Double, r As Double
    Dim ctl As Control

    MultiPage1.Pages.Add

    MultiPage1.Pages(0).Controls.Copy
    MultiPage1.Pages(1).Paste

     For Each ctl In MultiPage1.Pages(0).Controls
        If TypeOf ctl Is MSForms.Frame Then
            l = ctl.Left
            r = ctl.Top
            Exit For
        End If
    Next

    For Each ctl In MultiPage1.Pages(1).Controls
        If TypeOf ctl Is MSForms.Frame Then
            ctl.Left = l
            ctl.Top = r
            Exit For
        End If
    Next
End Sub

СНИМОК

введите здесь описание изображения

person Siddharth Rout    schedule 30.05.2012
comment
Когда я запускаю приведенный выше код, я получаю ошибку времени выполнения «-2147417949 (80010108)»: ошибка автоматизации объекта, вызванного как отключенного от своих клиентов. - person Ehudz; 30.05.2012
comment
какая строка дает вам ошибку? Я только что проверил это снова, и это работает. - person Siddharth Rout; 30.05.2012
comment
если я все закомментирую и оставлю только MultiPage1.Pages.Add, это выдаст мне ошибку - person Ehudz; 30.05.2012
comment
Это странно. Можете ли вы загрузить файл, который вы только что создали, и загрузить его, скажем, на wikisend.com, а затем поделиться ссылкой здесь. - person Siddharth Rout; 30.05.2012
comment
Я думаю, что есть какая-то основная проблема, затрагивающая все мои пользовательские формы в том же проекте. Я создал новый проект, добавил пользовательскую форму и попробовал приведенный выше код, и он работает. Я попробую воссоздать пользовательскую форму и посмотреть, что произойдет - person Ehudz; 31.05.2012
comment
На самом деле вам не нужно использовать фрейм, если вы просто собираетесь реплицировать страницу внутри Multipage. Просто используйте control.copy, а затем .paste, и этого должно быть достаточно. - person cyberponk; 23.05.2019

«Ошибка времени выполнения «-2147417949 (80010108)» может быть вызвана наличием фрейма где-то еще в форме. Попробуйте удалить все другие фреймы и запустить снова.

person Kazarenko    schedule 08.09.2014