VBA动态用户表单提供“对象变量或未设置块变量”错误

时间:2017-09-09 05:37:53

标签: excel vba excel-vba

Bellow是我尝试动态创建一个框架,为其添加(动态创建的)标签,然后将所述框架添加到我的用户窗体中的另一个框架。

但是在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

1 个答案:

答案 0 :(得分: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