2012-05-30 9 views
5

Ho una pagina multipla in un modulo utente. Durante l'esecuzione, l'utente può scegliere di aggiungere il numero x di pagine in qualsiasi momento. Gli elementi di ciascuna pagina saranno uguali. Mi chiedo se c'è un modo per duplicare questi elementi o dovrei ricreare questi stessi elementi per ogni nuova pagina? In tal caso, come posso specificare le posizioni nella pagina in cui deve essere posizionato l'elemento?Copia elementi da una pagina a un'altra in più pagine con VBA in Excel

enter image description here

+0

È possibile duplicarli copiando e incollando o creando da zero –

risposta

7

Il trucco è quello di mettere tutti i comandi in una cornice nella prima pagina e poi il resto diventa facile :)

Questo codice copiare i controlli dalla Page1 a Page2 dopo aver creato Page2 e allineare di conseguenza.

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 

ISTANTANEA

enter image description here

+0

Genius! Thanks! – Ehudz

+0

Quando eseguo il codice precedente, ottengo un "Run-tim" e errore '-2147417949 (80010108)': errore di automazione dell'oggetto richiamato come disconnesso dai suoi client. " – Ehudz

+0

quale riga ti sta dando l'errore? L'ho appena testato e funziona. –

0

Il "Errore di runtime '-2.147,417949 millions (80010108)' può essere causato da avere una cornice da qualche altra parte sul modulo. Provare a rimuovere tutti gli altri fotogrammi

Problemi correlati