2011-08-02 4 views
1

私は異常な問題に遭遇しています。 私は 一つは、フレームにコンボボックス特定のページにコントロールを追加したくない

を追加する

Public Sub AddFramesNP(form, pagina, nrpag) 
Set cControl = form!main.Pages(nrpag).Controls.Add("Forms.Frame.1", "io" & masina, True) 
     With cControl 
      .Caption = "IO" 
      .Width = 210 
      .Height = 360 
      .Top = 2 
      .Left = 5 
     End With 
    Set cControl = form!main.Pages(nrpag).Controls.Add("Forms.Frame.1", "nio" & masina, True) 
     With cControl 
      .Caption = "nIO" 
      .Width = 210 
      .Height = 360 
      .Top = 2 
      .Left = 220 
     End With 
    Set cControl = form!main.Pages(nrpag).Controls.Add("Forms.Frame.1", "desc" & masina, True) 
     With cControl 
      .Caption = "Descriere" 
      .Width = 210 
      .Height = 360 
      .Top = 2 
      .Left = 435 
     End With 
End Sub 

一つ追加するラベル

Public Sub AddLabsNP(form, pagina, replicare, den, den1, den2) 
Dim k, l As Integer 
    If den = 1 Then 
     Set cControl = form.Controls("io" & masina).Add("Forms.Label.1", "lden1" & pagina, True) 
      With cControl 
       .Caption = den1 
       .Width = 40 
       .Height = 10 
       .Top = 5 
       .Left = 5 
      End With 
     Set cControl = form.Controls("nio" & masina).Add("Forms.Label.1", "lden1nio" & pagina, True) 
      With cControl 
       .Caption = den1 
       .Width = 40 
       .Height = 10 
       .Top = 5 
       .Left = 5 
      End With 
     End If 
    If replicare = 1 Then 
     Set cControl = form.Controls("io" & masina).Add("Forms.Label.1", "lden2" & pagina, True) 
     With cControl 
      .Caption = den2 
      .Width = 40 
      .Height = 10 
      .Top = 165 
      .Left = 5 
     End With 
    Set cControl = form.Controls("nio" & masina).Add("Forms.Label.1", "lden2nio" & pagina, True) 
     With cControl 
      .Caption = den2 
      .Width = 40 
      .Height = 10 
      .Top = 165 
      .Left = 5 
     End With 
    End If 
    Do While l < replicare + 1 
     Set cControl = form.Controls("io" & masina).Add("Forms.Label.1", "lreper" & l & pagina, True) 
      With cControl 
       .Caption = "Reper" 
       .Width = 35 
       .Height = 9 
       .Top = 25 + k 
       .Left = 5 
      End With 
     Set cControl = form.Controls("io" & masina).Add("Forms.Label.1", "lsn" & l & pagina, True) 
      With cControl 
       .Caption = "SN" 
       .Width = 35 
       .Height = 9 
       .Top = 25 + k 
       .Left = 70 
      End With 
     Set cControl = form.Controls("io" & masina).Add("Forms.Label.1", "lqt" & l & pagina, True) 
      With cControl 
       .Caption = "Qt" 
       .Width = 35 
       .Height = 9 
       .Top = 25 + k 
       .Left = 155 
      End With 
     Set cControl = form.Controls("nio" & masina).Add("Forms.Label.1", "lrepernio" & l & pagina, True) 
      With cControl 
       .Caption = "Reper" 
       .Width = 35 
       .Height = 9 
       .Top = 25 + k 
       .Left = 5 
      End With 
     Set cControl = form.Controls("nio" & masina).Add("Forms.Label.1", "lsnnio" & l & pagina, True) 
      With cControl 
       .Caption = "SN" 
       .Width = 35 
       .Height = 9 
       .Top = 25 + k 
       .Left = 70 
      End With 
     Set cControl = form.Controls("nio" & masina).Add("Forms.Label.1", "lqtnio" & l & pagina, True) 
      With cControl 
       .Caption = "Qt" 
       .Width = 35 
       .Height = 9 
       .Top = 25 + k 
       .Left = 155 
      End With 
      k = k + 155 
      l = l + 1 
    Loop 
End Sub 

そして、もう一つを追加するために異なるページ上のコントロールの束を追加するための手順のセットを持っています
Public Sub AddCboxsNP(form, pagina, replicare, nrcboxs) 
Dim k, l As Integer 
l = 1 
     Do While l < nrcboxs + 1 
      Set cControl = form.Controls("io" & masina).Add("Forms.ComboBox.1", "combo" & l & pagina, True) 
       With cControl 
        .Width = 60 
        .Height = 14 
        .Top = 40 + k 
        .Left = 5 
       End With 
      Set cControl = form.Controls("io" & masina).Add("Forms.TextBox.1", "sn" & l & pagina, True) 
       With cControl 
        .Width = 80 
        .Height = 28 
        .Top = 40 + k 
        .Left = 70 
       End With 
      Set cControl = form.Controls("io" & masina).Add("Forms.TextBox.1", "q" & l & pagina, True) 
       With cControl 
        .Width = 30 
        .Height = 14 
        .Top = 40 + k 
        .Left = 155 
       End With 
      Set cControl = form.Controls("nio" & masina).Add("Forms.ComboBox.1", "combo" & l & "nio" & pagina, True) 
       With cControl 
        .Width = 60 
        .Height = 14 
        .Top = 40 + k 
        .Left = 5 
       End With 
      Set cControl = form.Controls("nio" & masina).Add("Forms.TextBox.1", "sn" & l & "nio" & pagina, True) 
       With cControl 
        .Width = 80 
        .Height = 28 
        .Top = 40 + k 
        .Left = 70 
       End With 
      Set cControl = form.Controls("nio" & masina).Add("Forms.TextBox.1", "q" & l & "nio" & pagina, True) 
       With cControl 
        .Width = 30 
        .Height = 14 
        .Top = 40 + k 
        .Left = 155 
       End With 
     If replicare = 2 Then 
      Set cControl = form.Controls("io" & masina).Add("Forms.ComboBox.1", "combo" & l & "2" & pagina, True) 
       With cControl 
        .Width = 60 
        .Height = 14 
        .Top = 200 + k 
        .Left = 5 
       End With 
      Set cControl = form.Controls("io" & masina).Add("Forms.TextBox.1", "sn" & l & "2" & pagina, True) 
       With cControl 
        .Width = 80 
        .Height = 28 
        .Top = 200 + k 
        .Left = 70 
       End With 
      Set cControl = form.Controls("io" & masina).Add("Forms.TextBox.1", "q" & l & "2" & pagina, True) 
       With cControl 
        .Width = 30 
        .Height = 14 
        .Top = 200 + k 
        .Left = 155 
       End With 
      Set cControl = form.Controls("nio" & masina).Add("Forms.ComboBox.1", "combo" & l & "2nio" & pagina, True) 
       With cControl 
        .Width = 60 
        .Height = 14 
        .Top = 200 + k 
        .Left = 5 
       End With 
      Set cControl = form.Controls("nio" & masina).Add("Forms.TextBox.1", "sn" & l & "2nio" & pagina, True) 
       With cControl 
        .Width = 80 
        .Height = 28 
        .Top = 200 + k 
        .Left = 70 
       End With 
      Set cControl = form.Controls("nio" & masina).Add("Forms.TextBox.1", "q" & l & "2nio" & pagina, True) 
       With cControl 
        .Width = 30 
        .Height = 14 
        .Top = 200 + k 
        .Left = 155 
       End With 
      End If 
      k = k + 35 
      l = l + 1 
     Loop 
End Sub 

問題は私がそれらを使いたいときに私は理由はわかりませんが、ページ3(私は2ページ目に使用していて、正常に動作します)では動作しません。私はこれらの2つのページ(2と3)のためにちょうどこれを使う必要があります。そして私は3ページ分うまく動作するマルチページを含むページのための別のセットの手順を持っています。 私は本当にどこに問題があるか分かりません。私はコードを使って手動でコンポーネントを追加しようとしましたが、うまくいきました。この手順を1回だけ行うようにする何かをしましたか?何度も何度も働く他の手順と同じなので、私は何も見ません! ご協力いただきありがとうございます!

+0

あなたはそれが 'nrpag = 3 'のために動作しないことを言っていますか?あなたはどんなエラーを出していますか?デバッグモードで実行しようとしましたか? –

+0

はい、ページ3で動作しません...理由はわかりません...エラーは発生しません...フレームは追加されますが、コンボボックスやラベルは追加されません。 2ページ目はうまくいきます。 –

+0

デバッグモードでコードをステップ実行しようとしましたか?その後何が起こるのですか? –

答えて

0

私は...それは古いスレッドが、ちょうど同じである知っている:)

私は例として、フレームコードを取っています。残りのサンプルとして使用してください:)

この例では、MultiPage1にフレームを作成しています。

は、このことができますなら、私を知ってみましょう:)

Option Explicit 

Private Sub CommandButton1_Click() 
    AddFramesNP Me, 3, 2 
End Sub 

Public Sub AddFramesNP(form As UserForm, masina, nrpag) 
    Dim cControl As Object 

    With form 
     Set cControl = .MultiPage1.Pages(nrpag).Controls.Add("Forms.Frame.1", "io" & masina) 
     With cControl 
      .Caption = "IO" 
      .Width = 210: .Height = 360: .Top = 2 
      .Left = 5 
     End With 

     Set cControl = .MultiPage1.Pages(nrpag).Controls.Add("Forms.Frame.1", "nio" & masina) 
     With cControl 
      .Caption = "nIO" 
      .Width = 210: .Height = 360: .Top = 2 
      .Left = 220 
     End With 

     Set cControl = .MultiPage1.Pages(nrpag).Controls.Add("Forms.Frame.1", "desc" & masina) 
     With cControl 
      .Caption = "Descriere" 
      .Width = 210: .Height = 360: .Top = 2 
      .Left = 435 
     End With 
    End With 
End Sub 
関連する問題