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