运行时错误'91' - 引用复选框时未设置对象变量或使用块变量

时间:2016-10-14 11:14:04

标签: forms vba outlook outlook-vba outlook-2013

我已阅读所有列出的帮助,但无法解决我的问题。

我正在Outlook 2013中创建一个表单,并且希望在满足某些条件时可以看到一些字段 - 我一直在尝试为此编写一些VBA代码..但是我收到了错误。

这是我的代码;

Sub AltSMSNumber()

Dim CheckBox2 As CheckBox
Dim TextBox2 As TextBox
Dim Label2 As Label

Set CheckBox2 = CheckBox2
Set TextBox2 = TextBox2
Set Label2 = Label2

If CheckBox2.Value = False Then

    Set TextBox2.Visible = True
    Set Label2.Visible = True

Else

    Set TextBox2.Visible = False
    Set Label2.Visible = False


End If

End Sub

我默认情况下将表单上的Checkbox设置为true,并且只在取消选中Checkbox时才希望TextBox2和Label2可见(false)。

我查看了所有的名字 - 它们都是我在代码中注明的名字。

它打破了; 如果CheckBox2.Value = False那么 告诉我没有设置对象。

任何人都可以指出我的错误吗?

由于

3 个答案:

答案 0 :(得分:0)

问题在于:

Set CheckBox2 = CheckBox2

您无法声明变量,然后将其设置为自身。您是否打算为其分配另一个现有复选框?

请注意,您使用的其他变量存在同样的问题。也许你应该查看VBA教程。网上有很多。

答案 1 :(得分:0)

如果您还没有重命名文本框或标签,那么这应该有用..

Sub AltSMSNumber()
 If CheckBox2.Value = False Then
     Set TextBox2.Visible = True
     Set Label2.Visible = True
 Else
    Set TextBox2.Visible = False
    Set Label2.Visible = False
End If
End Sub

答案 2 :(得分:0)

在userform代码窗格中,使用Me关键字引用userform

使用它并通过简单地键入一个点(.)然后成员名称

来获取其成员(就像它的控件一样)
Sub AltSMSNumber()
    With Me '<-- reference the userform
        .TextBox2.Visible = Not .CheckBox2
        .Label2.Visible = Not .CheckBox2
    End With
End Sub

但如果您希望该行为为&#34;自动&#34;然后使用CheckBox2 Click事件处理程序

Private Sub CheckBox2_Click()
    With Me '<-- reference the userform
        .TextBox2.Visible = Not .CheckBox2
        .Label2.Visible = Not .CheckBox2
    End With
End Sub