VBScript:查找数组中非空元素的数量

标签 vbscript

在 VBScript 中确定数组中元素数量的“最佳”方法是什么?

UBound() 会告诉您已为数组分配了多少个槽位,但不会告诉您填充了多少个槽位——取决于具体情况,这些数字可能相同也可能不同。

最佳答案

首先,没有预定义的标识符称为 vbUndefined,正如当前接受的答案似乎暗示的那样。该代码仅在脚本顶部没有 Option Explicit 时才有效。如果您还没有使用 Option Explicit,那么就开始使用吧,它会让您省去所有的麻烦。

您可以用来代替 vbUndefined 的值是 Empty,例如:-

If arr(x) = Empty Then ...

Empty 是预定义的标识,是尚未分配值的变量或数组元素的默认值。

但是有一些问题需要注意。以下语句均显示为真:-

MsgBox 0 = Empty
MsgBox "" = Empty
MsgBox CDate("30 Dec 1899") = True

因此,如果您希望这些值中的任何一个是数组元素的有效定义值,那么与 Empty 进行比较不会削减它。

如果您真的想确定该元素是真正“未定义”的“空”元素,请使用 IsEmpty 函数:-

If IsEmpty(arr(x)) Then

IsEmpty 仅当参数实际上正确地为 Empty 时才返回 true。

还有一个问题,Null 是一个可能的值,可以保存在数组或变量中。然而:-

MsgBox Null = Empty

是一个运行时错误,“null 的无效使用”和:-

MsgBox IsEmpty(Null)

是错误的。因此,您需要确定 Null 是表示未定义还是有效值。如果 Null 也意味着未定义,你需要你的 If 语句看起来像:-

 If IsEmpty(arr(x)) Or IsNull(arr(x)) Then ....

如果您知道永远不会将 Null 分配到数组中,您可以放弃此操作。

关于VBScript:查找数组中非空元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1138842/

相关文章:

excel - 使用 vbscript 在 excel 中创建散点图

arrays - 将模式和相应的替换字符串传递给函数

excel - 将 Excel VBA 代码注入(inject)从外部源接收的电子表格并执行

vbscript - 使用 chrw 将长整数二进制转换为字符串

windows - 通过VB脚本停止/启动服务

testing - QTP捕获位图时错误号-2147467259

vbscript - 在没有外部工具的情况下从 mysqldump 中排除数据库

cmd - 使用 VBScript 获取给定描述的进程 ID

batch-file - 根据按下的按钮路由脚本的路径 mshta.exe vbscript :Execute

javascript - 如何处理VBS中的JavaScript错误?