1

你好友好的人。我会尽可能具体。问题如下:

为什么第一行在 VBE 即时窗口中有效,而第二行无效?我怎样才能使第二行工作?

err.Raise 999,,"EA"
err.Raise err.Number:= 999,err.Description:= "EA"
4

2 回答 2

3

不要err.X在您的通话中提及,只需设置X:=...

err.Raise Number:=999, Description:= "EA"
于 2015-11-20T09:22:55.823 回答
2

err是实际的错误对象,对于.Raise您提供参数的方法。此错误与它在即时窗口中无关 - 它也不会在模块中工作,因为语法错误。

如果您按照预期的顺序提供所有参数 - 那么无需指定参数的标头信息:

例如Workbook.SaveAs()方法

.SaveAs文件名、文件格式、密码、WriteResPassword、ReadOnlyRecommended、CreateBackup、AccessMode、ConflictResolution、AddToMru、TextCodepage、TextVisualLayout、Local

你可以写:

wb.SaveAs "myFile.xlsx", xlOpenXMLWorkbook, "Password123", "Passsword123", True,,,,,,,,

但是,如果您想在两者之间跳过一些逗号并且不到处都有逗号(这样可以提高可读性),您可以执行以下操作:

wb.SaveAs FileName:="myFile.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False, Local:=True

继续这个例子,您所做的是重新引用对象并尝试访问尚不存在的属性:

wb.SaveAs wb.FileName:="myFile.xlsx", wb.FileFormat:=xlOpenXMLWorkbook

如果您正在访问对象的属性,则您正在读取写入该属性。

  • myVariable = wb.Name(读)
  • wb.Name = myVariable(写)

这两个操作都使用=运算符。

您编写err.Number:=999编译器的地方期望使用=运算符进行读/写操作,这就是导致错误的原因。

希望这能更详细地解释它。

于 2015-11-20T09:48:32.447 回答