2012-05-30 54 views
5

Tôi có một đa dạng trong một biểu mẫu người dùng. Trong thời gian chạy, người dùng có thể chọn thêm x số trang bất kỳ lúc nào. Các yếu tố của mỗi trang sẽ giống nhau. Tôi tự hỏi nếu có một cách để nhân đôi các yếu tố này, hoặc tôi sẽ cần phải tạo lại các yếu tố tương tự cho mỗi trang mới? Nếu vậy, làm cách nào để chỉ định vị trí trên trang nơi đặt phần tử?Sao chép các yếu tố từ trang này sang trang khác trong nhiều trang với VBA trong Excel

enter image description here

+0

Bạn có thể sao chép chúng bằng cách sao chép và dán hoặc bằng cách tạo từ đầu. –

Trả lời

7

Bí quyết là để đặt tất cả các điều khiển trong một khung trong trang 1 và sau đó phần còn lại trở nên dễ dàng :)

Mã này sẽ sao chép các điều khiển từ Page1 để Page2 sau khi tạo Page2 và sắp xếp chúng cho phù hợp.

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

Genius! Cảm ơn! – Ehudz

+0

Khi tôi chạy mã trên, tôi nhận được "Chạy-tim e error '-2147417949 (80010108)': Lỗi tự động hóa đối tượng được gọi là diconnected từ các máy khách của nó. " – Ehudz

+0

dòng nào cho bạn lỗi? Tôi chỉ thử nghiệm nó một lần nữa và nó hoạt động. –

0

Các "Run-time error '-2147417949 (80010108)' có thể là do có một khung ở một nơi khác trên biểu mẫu. Cố gắng loại bỏ bất kỳ khung hình khác và chạy lại:

Các vấn đề liên quan