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",是字符串