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