如何在VBS中使用excel内置常量

时间:2016-10-09 09:15:12

标签: excel vbscript

我想使用VBScript处理EXCEL而不是VBA。但是在调用Range.Find方法时遇到了代码错误,见下文

Function find_range(wb, domain, var)
    Dim sheet
    Dim rg1, rg2, rg3
    Set sheet = wb.Sheets(domain)

    Set rg1 = sheet.Range("D:D").Find(var, , xlValues, xlWhole )

    If Not rg1 is Nothing Then
        'msgbox rg1.Cells(1,1).row
        Set rg2 = sheet.Cells(rg1.Cells(1,1).row, 19)
        msgbox(rg2.value)
    End if
End Function

执行find_range函数时,我得到了

  

变量未定义“xlValues”“xlWhole”

错误。

所以我想我不能在VBScript中以这种方式使用excel内置常量 那么正确的方法是什么?

1 个答案:

答案 0 :(得分:2)

不幸的是,这些命名常量是Excel对象库的一部分,VBScript无法引用它,所以最好的方法是在Excel VBA中的对象浏览器中查找命名常量或通过各种引用在线查找,然后创建自己的命名常量并使用它们在你的代码中。

在此示例中,您使用两个枚举,可以通过查找Range.Find() method来识别。

  • xlValuesxlFindLookIn枚举中的命名常量,其值为-4163
  • xlWholexlLookAt枚举中的命名常量,其值为1

因此,一旦您了解了可以定义它们的价值,您的代码就可以正常运行而无需进行任何更改。

Const xlValues = -4163
Const xlWhole = 1

理想情况下,这些值应在脚本的全局范围内声明,以便任何函数或过程都可以访问它们。

您可能会问为什么不指定数值?虽然这确实是一种有效的方法,但如果您在多个位置使用该值,则必须在多个位置修改该值,如果值发生变化(在此方案中不太可能)。使用命名常量,您可以进行一次更改,并且代码中的任何位置也会更改引用的值。

值得注意的是,VBScript只对数值感兴趣,因此从技术上讲,您可以根据需要命名常量。但是,最好遵循命名约定,尤其是在Excel VBA中重复使用功能代码时。例如。

相关问题