簡體   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