VBA - 写入参数时的错误处理
VBA - Error handling with writing the arguments
你好友好的人。我会尽可能具体。问题如下:
为什么第一行在 VBE 立即数 window 中起作用,而第二行却不起作用?
我怎样才能使第二行工作?
err.Raise 999,,"EA"
err.Raise err.Number:= 999,err.Description:= "EA"
不要在你的调用中引用 err.X
,只需设置 X:=...
:
err.Raise Number:=999, Description:= "EA"
err
是实际错误 object,对于 .Raise
方法,您正在提供参数。这个错误与它在直接 window 中无关 - 它也不会在模块中工作,因为语法错误。
如果您按预期顺序提供所有参数 - 则无需指定参数的 header 信息:
例如Workbook.SaveAs()
方法
.SaveAs(FileName, FileFormat, Password, 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
继续此示例,您所做的是 re-reference object 并尝试访问尚不存在的 属性:
wb.SaveAs wb.FileName:="myFile.xlsx", wb.FileFormat:=xlOpenXMLWorkbook
如果您正在访问 object 的 属性,则您正在 阅读 或 写作 to/from 那 属性.
myVariable = wb.Name
(阅读)
wb.Name = myVariable
(写入)
这两个操作都使用 =
运算符。
在您编写 err.Number:=999
的地方,编译器期望使用 =
运算符进行 read/write 操作,这就是导致错误的原因。
希望解释得更详细一点。
你好友好的人。我会尽可能具体。问题如下:
为什么第一行在 VBE 立即数 window 中起作用,而第二行却不起作用? 我怎样才能使第二行工作?
err.Raise 999,,"EA"
err.Raise err.Number:= 999,err.Description:= "EA"
不要在你的调用中引用 err.X
,只需设置 X:=...
:
err.Raise Number:=999, Description:= "EA"
err
是实际错误 object,对于 .Raise
方法,您正在提供参数。这个错误与它在直接 window 中无关 - 它也不会在模块中工作,因为语法错误。
如果您按预期顺序提供所有参数 - 则无需指定参数的 header 信息:
例如Workbook.SaveAs()
方法
.SaveAs(FileName, FileFormat, Password, 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
继续此示例,您所做的是 re-reference object 并尝试访问尚不存在的 属性:
wb.SaveAs wb.FileName:="myFile.xlsx", wb.FileFormat:=xlOpenXMLWorkbook
如果您正在访问 object 的 属性,则您正在 阅读 或 写作 to/from 那 属性.
myVariable = wb.Name
(阅读)wb.Name = myVariable
(写入)
这两个操作都使用 =
运算符。
在您编写 err.Number:=999
的地方,编译器期望使用 =
运算符进行 read/write 操作,这就是导致错误的原因。
希望解释得更详细一点。