未初始化的VBScript变量为Empty
;计算中的空值“count”为0或“”。见here。
>> Dim e
>> WScript.Echo CStr(IsEmpty(e)), TypeName(e), CStr(e = Empty)
>> WScript.Echo e + 1 + e
>>
True Empty True
1
因此,使用IsEmpty()捕获空单元格值。
更新WRT评论:
我解决了这个问题
的问题是,当我在“裁判”文件中的“O”值和 “空单元格”在另一个文件中,如果 相同(因为我已经理解VB的empty = 0,因为任何 未初始化的变量的值为0),所以我评论比较的结果。这就是我的代码不能在“0”值单元格和空白之间做出区别细胞
显然,这是从
不同,使不同 “0” 之间 “”
对于这一点,只要看看:
type 37673790.vbs
Option Explicit
Dim n : n = 0
Dim s : s = " "
If s = n Then
WScript.Echo "Surprise"
Else
WScript.Echo "Not s = n"
End If
cscript 37673790.vbs
Not s = n
这
>> a = Array(Empty, 0, "", " ")
>> For Each e In a
>> WScript.Echo CStr(IsEmpty(e))
>> Next
>>
True
False
False
False
应停止unbased猜测WRT
的差异不会在环路中可以看出
更新II:
所以它仍然是是否“0比空白单元格是不同的” ...
我最后一次尝试:
Option Explicit
Dim a : a = Array(Empty, 0, "", " ")
Dim i, j
For i = 0 To UBound(a)
For j = 0 To UBound(a)
WScript.Echo i, j, Cmp(a(i), a(j))
Next
Next
Function Cmp(a, b)
If VarType(a) <> VarType(b) Then
Cmp = "type diff (" & TypeName(a) & "<->" & TypeName(b) & ")"
Else
If a = b Then
Cmp = "val equal"
Else
Cmp = "val diff (" & Join(Array(a, b), "|") & ")"
End If
End If
End Function
输出:
cscript 37673790.vbs
0 0 val equal
0 1 type diff (Empty<->Integer)
0 2 type diff (Empty<->String)
0 3 type diff (Empty<->String)
1 0 type diff (Integer<->Empty)
1 1 val equal
1 2 type diff (Integer<->String)
1 3 type diff (Integer<->String)
2 0 type diff (String<->Empty)
2 1 type diff (String<->Integer)
2 2 val equal
2 3 val diff (|)
3 0 type diff (String<->Empty)
3 1 type diff (String<->Integer)
3 2 val diff (|)
3 3 val equal
请问您可以发布您的代码吗? –
http://www9.0zz0.com/2016/06/07/11/782086843.png 谢谢 – bben147