1

我有以下 vba 函数(在 Excel 文件中的模块中)

Public Function validate_fncname(strFncname As String) As Boolean
.
.
.
validate_fncname  = True
End Function

我写了以下 vbscript 来调用它:

Set objExcel = CreateObject("Excel.Application")
Set objWorkbook =  objExcel.Workbooks.Open("C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm")

objExcel.Application.Visible = True

Dim str
str ="hello"

Dim validate_fncname 

 validate_fncname =  objExcel.Application.Run("'C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm'!validate_fncname", str)

Wscript.Echo validate_fncname

但是,当我运行脚本时,它给了我该行的类型不匹配错误:

objExcel.Application.Run("'C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm'!validate_fncname", str)

尽管类型正确(字符串)

此外,如果我将其更改为:

objExcel.Application.Run("'C:\Users\uidu8611\Desktop\CAM0500040F10_SW_Quality_Assurance_Report_Template(new_version).xlsm'!validate_fncname(5)")

它不会给我一个错误,虽然 5 是整数!

请问我的错在哪里?

4

2 回答 2

1

您已经有了validate_fncname看起来不错的方法(除了将返回值设置为True可能应该在if then语句中完成以避免将所有内容设置为True)。

调用此函数时,您应该能够执行以下操作:

Dim validateResult As Boolean
Dim str as String
str = "hello"
validateResult = validate_fncname(str)
Debug.Print validateResult
于 2012-11-05T20:01:46.123 回答
0

我玩了一段时间,并提出了同样的错误。
就我而言,我只是想来回传递一个字符串。

然后我查看了 VBScript 的 dim 语句,它说“所有 VBScript 变量都是变体”,所以我将电子表格上的函数更改为 Variant,这对我有用。希望这可以帮助遇到此线程的其他人。

于 2015-10-22T03:04:36.427 回答