2012-05-30 9 views
5

Mam wielostronicowy w userform. W czasie wykonywania użytkownik może w każdej chwili dodać x liczbę stron. Elementy każdej strony będą takie same. Zastanawiam się, czy istnieje sposób na skopiowanie tych elementów, czy też musiałbym ponownie utworzyć te same elementy dla każdej nowej strony? Jeśli tak, jak określić położenie na stronie, na której element ma zostać umieszczony?Kopiowanie elementów z jednej strony do drugiej w wielościeżce z VBA w programie Excel

enter image description here

+0

Możesz je powielić kopiując i wklejając lub tworząc od podstaw. –

Odpowiedz

7

Sztuką jest ułożenie wszystkich elementów sterujących w ramce na 1 stronie, a potem reszta staje się łatwe :)

Kod ten należy skopiować do kontroli z Page1Page2 po utworzeniu Page2 i wyrównać odpowiednio do nich.

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 

SNAPSHOT

enter image description here

+0

Geniusz! Dzięki! – Ehudz

+0

Po uruchomieniu powyższego kodu otrzymuję komunikat "Run-tim" e błąd "-2147417949 (80010108)": Automatyzacja powoduje błąd w wywołaniu obiektu wywołanego przez jego klientów. " – Ehudz

+0

która linia daje błąd? Właśnie przetestowałem to i to działa. –

0

W „Run-time error '-2147417949 (80010108)' może być spowodowane przez posiadające ramę gdzieś indziej na formularzu. Spróbuj usunąć wszelkie inne ramek i znowu działa

Powiązane problemy