当前位置: 代码迷 >> VB >> 类型不匹配的有关问题
  详细解决方案

类型不匹配的有关问题

热度:3621   发布时间:2013-02-26 00:00:00.0
类型不匹配的问题
本帖最后由 bcrun 于 2013-02-02 19:02:17 编辑
Private Sub Form_Load()
Dim JiaoYanHe As Long
Dim aa As Long

JiaoYanHe = Val("&h" & "4a") + Val("&h" & "4b")
Label1.Caption = Hex(JiaoYanHe) And &HFF
aa = Val("&h" & "4a")
Debug.Print Hex(aa)

Label2.Caption = Hex(aa) And &HFF
End Sub


为啥第一个label1可以正常的输出值,而label2却弹出说类型不匹配,表示非常纳闷,求大神帮忙咧

------解决方案--------------------------------------------------------
Private Sub Form_Load()
Dim JiaoYanHe As Long
Dim aa As Long

JiaoYanHe = Val("&h" & "4a") + Val("&h" & "4b")
Label1.Caption = Hex(JiaoYanHe) And &HFF
aa = Val("&h" & "4a")
Debug.Print Hex(aa)

Label2.Caption = aa And &HFF ' 试试这样,hex(aa)返回的是字符串"4A",不能参加与运算(AND)。
End Sub

------解决方案--------------------------------------------------------
改成 Label2.Caption ="&H" & Hex(aa) And &HFF
1楼已经回答了,hex()返回表示一个数的十六进制值的字符串。字符串不能参与逻辑运算(And Or Not)
首先,label1可以正常是因为,JiaoYanHe = Val("&h" & "4a") + Val("&h" & "4b")=149
Hex(JiaoYanHe)="149"(字符串),但是纯数字字符串参加运算vb会自动转换,label1是正常的,
label2不正常是因为Hex(aa)="4A",是字符串
  相关解决方案