首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

麻烦VBA高手帮小弟我解释解释下面的这三种情况

2013-07-01 
麻烦VBA高手帮我解释解释下面的这三种情况if 1 1 then1_这个if是true Q1:为什么类型不一样,确相等?en

麻烦VBA高手帮我解释解释下面的这三种情况


if 1 = "1" then
    '1_这个if是true Q1:为什么类型不一样,确相等?
end if

Dim i, j
i = "1"
j = 1
if j = "1" then
    '2_这个if是true Q2:这里和Q1
end if

if i = j then
    '3_这个if是false Q3:这里就更加BT了,如果是两个变量其就得出想要的结果。
end if 


希望高手能解答。 VBA
[解决办法]
这里,VB 表达式进行了自动类型转换。

?1 = "1"
?1 = " 1"
?1 = " 1 "

均得到 True;

?1 = "2"

得到 False;

?1 = " 1 2"

得到类型不匹配错误。因为无法中此字符串转换成 Integer。

如果 Dim i As String, j As Integer,则后面的表达式均为 True。

这与类型自动转换规则有关。

但作为好的编程习惯,不建议写这样的代码。




[解决办法]
这个跟Dim定义变量有关系,VBA默认的数据类型为Variant,在进行数学运算时,会自动转型为数值型;在进行两个字符连接时,就转换成字符型。
例如:

Dim SomeValue      '缺省为 Variant。
SomeValue = "17"   'SomeValue包含 "17"(双字符的串)。
SomeValue = SomeValue - 15       '现在, SomeValue 包含数值 2。
SomeValue = "U" & SomeValue   '现在, SomeValue 包含 "U2" (双字符的串)。

热点排行