2012-05-30 83 views
5

Tengo una página múltiple en una formulario de usuario. Durante el tiempo de ejecución, el usuario puede elegir agregar x número de páginas en cualquier momento. Los elementos de cada página serán los mismos. Me pregunto si existe una forma de duplicar estos elementos, o ¿tendría que volver a crear estos mismos elementos para cada página nueva? De ser así, ¿cómo especifico las ubicaciones en la página donde se debe colocar el elemento?Copiar elementos de una página a otra en multipágina con VBA en Excel

enter image description here

+0

Puede duplicarlos copiando y pegando o creando desde cero. –

Respuesta

7

El truco es poner todos los controles en un cuadro en la primera página y luego el resto se convierte en fácil :)

Este código va a copiar los controles de Page1 a Page2 después de crear y alinear Page2 ellos en consecuencia.

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 

INSTANTÁNEA

enter image description here

+0

Genio! Gracias! – Ehudz

+0

Cuando ejecuto el código anterior, obtengo un "Run-tim" e error '-2147417949 (80010108)': error de automatización el objeto invocado como se ha enviado por sus clientes. " – Ehudz

+0

¿Qué línea le está dando el error? Acabo de probarlo de nuevo y funciona. –

0

El "Run-time error '-2147417949 (80010108)' puede ser causado por tener un marco a otro lugar en el formulario. Trate de no incluir cualquier otro marco y corriendo de nuevo.

Cuestiones relacionadas