[英]VBA What does Cbool mean? (in ACTUAL English)
我似乎无法理解第二行:
If Not CBool(GetKeyState(vbKeyRButton) And &H8000)
请问您要客气吗,请用朴素的英语解释一下。 我只能从中了解到“ If not”和“ And”,我对这里的所有VBA向导都充满信心! 请帮我!
完整的代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not CBool(GetKeyState(vbKeyRButton) And &H8000) Then
If IsEmpty(strBoardSize) Then
Exit Sub
End If
Else
End if
Sub end
strBoardSize是表的大小,以前是
Dim strBoardSize as string
根据此页面 ,CBool方法接受任何输入并尝试对值进行布尔比较。
因此,用英语:
If the value returned by (GetKeyState(vbKeyRButton) And &H8000) is not true, then:
If IsEmpty(strBoardSize) Then
Exit Sub
End If
Else
End if
另一种查看方式是:
Dim LCompare as Boolean
LCompare = CBool(GetKeyState(vbKeyRButton) And &H8000) 'Sets the value returned from CBool in LCompare
If Not LCompare Then
If IsEmpty(strBoardSize) Then
Exit Sub
End If
Else
End if
另一篇文章解释了GetKeyState的输入是什么以及它们如何影响按位运算符。
希望这会有所帮助...
GetKeyState是在https://msdn.microsoft.com/zh-cn/library/windows/desktop/ms646301(v=vs.85).aspx中描述的Windows API函数。 它返回一个整数,并说:“如果高位为1,则该键按下;否则,它按下。” (此处,感兴趣的键是鼠标右键,由常量vbKeyRButton指定。)
&H8000是仅设置了高阶位的整数,因此And操作返回0或&H8000。 &H8000是高阶位的掩码(在本地)。
CBool函数将0转换为False,将任何非零值转换为True,因此在这里,如果按下该键,它将返回True,否则返回False。
CBool的字面意思是“转换为布尔值”(强制转换),因为GetKeyState和&H8000的类型不是布尔值,因此需要转换或强制转换。
If Not CBool(GetKeyState(vbKeyRButton) And &H8000)
因此,对于您的代码而言,这意味着:
If vbKeyRButton AND &H8000 are both false then ...
对于其余的代码,
If IsEmpty(strBoardSize)
这将检查String strBoardSize是否为空。 因此,如果strBoardSize为空,则转到下一行代码,否则结束if语句并继续执行else(但那里什么也没有)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.