我的代码中有一个非常简单的If Else
语句,如下所示:
If GUI.editedFH = "" Then
fhNumField.Value = fhNumField.List(0)
Else
fhNumField.Value = editedFH
End If
这段代码位于UserForm_Initialize()
sub中,在用户使用表单编辑或删除数据行后,我经常调用它。我卸载表单并重新加载它作为一种方式来刷新"表格中的数据。
代码在If
语句的第一行失败。 VBE抛出此错误
Run-time error '1004':
Application-defined or object-defined error
GUI.editedFH
是一个在单独模块中声明的全局字符串。 GUI
是模块的名称,editedFH
是字符串变量名称。我在GUI.editedFH
上放了一只手表,我将String
作为我想要的类型和价值。
当我硬编码字符串值而不是GUI.editedFH
时,它仍然无法正常工作,即
If "abc" = "" Then
'....
End If
最令人困惑的部分是我可以在其他地方比较这样的字符串,并且在错误发生时似乎是随机的。它将首次通过初始化和后续几次工作,但最终会产生错误。