繁体   English   中英

VBA Cbool是什么意思? (以英语为准)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM