2017-09-09 7 views
1

Bellowは、動的にフレームを作成し、(動的に作成された)ラベルを追加してから、そのフレームを私のuserformの別のフレームに追加しようとします。VBA動的userformが "Object variableまたはWithブロック変数が設定されていません"エラー

しかし、一部では私が間違っているのは何

「を設定していない変数またはWithブロック変数がオブジェクト」エラー91を与えますか?きれいでモダンで効率的なコードを維持しながら、より高度なVBAロジックを実行するのは本当に苦労しています。

Dim newf As MSForms.Frame 

'First the description 
With newf.Controls.Add("Forms.Label.1") 
    'Formating it 
    .SpecialEffect = fmSpecialEffectEtched 
    .Caption = ComboBox1.Value 
    .Height = 20 
    .Width = ComboBox1.Width - 10 
    .Left = 10 
    newp.Font.Size = 12 
End With 
'FrameProduct already pre exists 
Me.FrameProducts.Controls.Add newf 
+2

あなたはnewfがmsforms.frameであると宣言しましたが、実際には 'set newf = ...'コマンドを使用して作成していません – jsotola

答えて

0

は、唯一の方法は、私が.controls.Addメソッドを呼び出す必要がコントロールを作成するようだ、私は、オブジェクトを作成していない、変数を設定して判明し、その解決策は、ネストされたこれらのスリックことになりましたwiths

Dim newf As MSForms.Frame 
Set newf = Me.FProducts.Controls.Add("Forms.Frame.1") 
With newf 
    .Visible = False 
    'First the description 
    With .Controls.Add("Forms.Label.1") 
     .SpecialEffect = fmSpecialEffectEtched 
     .Caption = ComboBox1.Value 
     .Height = 20 
     .Width = ComboBox1.Width - 10 
     .Left = 10 
     .Font.Size = 12 
    End With 
    .Visible = True 
End with 
関連する問題