2016-12-16 91 views
0

我写一个剧本,我有三个ComboBox一个Userform。我希望ComboBox3的内容取决于用户在ComboBox2中输入的内容。我通过为ComboBox2的内容创建索引并使用Select Case函数来填充ComboBox3。这工作正常。组合框清除Excel的VBA

UserForm被初始化时,ComboBox3被冻结,直到用户输入ComboBox2中的某些东西。但是,我希望ComboBox3变为空白,并且在用户输入ComboBox2中的内容后再次删除其内容时,将重新冻结。我试图用下面的代码来做到这一点:

If ComboBox2 = "" Then 
     ComboBox3 = "" And ComboBox3.Enabled = False 
End If 

这给了我一个“类型不匹配”的错误信息。我曾尝试以下,和它的作品:

If ComboBox2 = "" Then 
      ComboBox3.Enabled = False 
    End If 

但是,它只能重新冻结ComboBox3,我真的需要它是空的。

我在做什么错?非常感谢您的帮助。

+0

'ComboBox3 =“”And ComboBox3.Enabled = False错误的语法,将这两条语句写在两条不同的行上并删除'And'。 –

回答

2

我认为你正在使用And不当

如果你希望它是在同一条线上,然后用

If ComboBox2 = vbNullString Then 
    ComboBox3 = vbNullString: ComboBox3.Enabled = False 
End If 

如果你不是大惊小怪的代码格式使用

If ComboBox2 = vbNullString Then 
    ComboBox3 = vbNullString 
    ComboBox3.Enabled = False 
End If 

此外它最好用vbNullString而不是空引号

+0

谢谢。它的工作方式非常完美! – franciscofcosta