Je publie cette question ici parce que j'ai trouvé une autre question semblable à celle-ci, "Copier les éléments d'une page à l'autre en multipage avec VBA dans Excel" J'ai toujours des questions car je ne suis pas sûr de la façon dont cela fonctionnera. Je devrais encore mettre mes champs de données dans un cadre.
Je dois permettre à l'user d'append autant de pages que nécessaire, alors que certains des contenus de l'user vont se déplacer et certains ne le seront pas.
Serait-il préférable d'avoir un domaine où l'user indique au système combien de fois ils doivent en doubler? Ou dois-je simplement avoir un button qui dit, "dupliquer cette page"
En outre, en plus de la page UserForm étant dupliquée pour l'input de l'user, j'ai besoin du process pour également dupliquer la feuille de calcul Excel pour assortir avec chaque page dupliquée dans le formulaire Userform.
L'aide à ce sujet sera grandement appréciée !!
Réglez un cap supérieur. c'est-à-dire qu'un user ne devrait pas pouvoir append plus d'un nombre spécifique de pages. Cela garantirait que vous ne rencontrez pas d'erreurs imprévues. Par exemple, l'user ne devrait pas pouvoir append plus de 25 pages (juste un exemple). Souvenez-vous, Excel a très faim en termes de memory lorsqu'il s'agit d'append des feuilles de travail illimitées et, par conséquent, la définition d'un cap supérieur est nécessaire. Aussi, imaginez avoir dit 100 pages dans la page multiple. Ce serait trop dérangé.
Serait-il préférable d'avoir un domaine où l'user indique au système combien de fois ils doivent en doubler? Ou dois-je simplement avoir un button qui dit, "dupliquer cette page"
Je crois que vous pouvez avoir les deux options. Cela garantira que
En outre, en plus de la page UserForm étant dupliquée pour l'input de l'user, j'ai besoin du process pour également dupliquer la feuille de calcul Excel pour assortir avec chaque page dupliquée dans le formulaire Userform.
Worksheets.Add
pour append plus de feuilles Voici un exemple simple
Cela créera une copy de la page et copyra la boîte de text existante vers la nouvelle page et définira sa propriété ControlSource
.
CAPTURE D'ÉCRAN
AVANT
APRÈS
CODE
Option Explicit Private Sub CommandButton1_Click() Dim pgCount As Long Dim wsNew As Worksheet Dim ctl As Control '~~> Get the current count of the pages pgCount = MultiPage1.Pages.Count '~~> Add a new page MultiPage1.Pages.Add '~~> Change '0' to whatever page you want to copy from MultiPage1.Pages(0).Controls.Copy '~~> Paste it in the newly created multipage MultiPage1.Pages(pgCount).Paste '~~> Add a new sheet Set wsNew = ThisWorkbook.Sheets.Add '~~> Give the new sheet a name wsNew.Name = "Erika" '~~> Adding a test value in Range A1 so that it reflects '~~> When we set the ControlSource of the textbox wsNew.Range("A1").Value = "Hello World" For Each ctl In MultiPage1.Pages(pgCount).Controls If TypeOf ctl Is MSForms.TextBox Then ctl.ControlSource = wsNew.Range("A1").Address Exit For End If Next End Sub
Voici un autre exemple où, au lieu de copyr le contrôle, vous pouvez réellement créer un nouveau contrôle et configurer sa propriété ControlSource
.
CAPTURE D'ÉCRAN
(Comme ci-dessus)
CODE
Option Explicit Private Sub CommandButton1_Click() Dim pgCount As Long Dim wsNew As Worksheet Dim ctl As Control '~~> Get the current count of the pages pgCount = MultiPage1.Pages.Count '~~> Add a new page MultiPage1.Pages.Add '~~> Add a new textbox Set ctl = MultiPage1.Pages(pgCount).Controls.Add("Forms.TextBox.1", _ "TextBox" & pgCount) '~~> Add a new sheet Set wsNew = ThisWorkbook.Sheets.Add '~~> Give the new sheet a name wsNew.Name = "Erika" '~~> Adding a test value in Range A1 so that it reflects '~~> When we set the ControlSource of the textbox wsNew.Range("A1").Value = "Hello World" ctl.ControlSource = wsNew.Range("A1").Address End Sub
J'espère que cela vous permet de commencer …