office交流網(wǎng)--QQ交流群號(hào)及微信交流群

Access培訓(xùn)群:792054000         Excel免費(fèi)交流群群:686050929          Outlook交流群:221378704    

Word交流群:218156588             PPT交流群:324131555

微信交流群(請(qǐng)用微信掃碼)

        

VBA用代碼設(shè)置文本框焦點(diǎn)的2種方法

2017-09-18 14:24:00
zstmtony
原創(chuàng)
10840

vba 如何控制 textbox控件 在 按回車(chē)鍵后 焦點(diǎn)轉(zhuǎn)移,正常是設(shè)置2個(gè)文本框控件的Tab鍵順序。

但有否其它辦法來(lái)實(shí)現(xiàn) 有兩個(gè) textbox 控件  在 第一個(gè) textbox 輸入完了后 按 回車(chē) (enter ) 焦點(diǎn)轉(zhuǎn)移到 第二個(gè) textbox


實(shí)現(xiàn)辦法一(使用Sendkeys 用回車(chē)鍵來(lái)模擬TAB鍵):



Private Sub Text1_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then '13是回車(chē)鍵的Ascii碼

        KeyAscii = 0

        SendKeys "{TAB}"

    End If

End Sub 

Private Sub Text2_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

        KeyAscii = 0

        SendKeys "{TAB}"

    End If

End Sub


實(shí)現(xiàn)辦法二(使用API來(lái)實(shí)現(xiàn)):



Option Explicit

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Const WM_KEYUP = &H101

Private Const WM_KEYDOWN = &H100

Private Const VK_TAB = &H9

Private Sub Text1_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

        PostMessage Text1.hwnd, WM_KEYDOWN, VK_TAB, 0

        Sleep 100

        PostMessage Text1.hwnd, WM_KEYUP, VK_TAB, 0

    End If

End Sub


Private Sub Text2_KeyPress(KeyAscii As Integer)

    If KeyAscii = 13 Then

        PostMessage Text2.hwnd, WM_KEYDOWN, VK_TAB, 0

        Sleep 100

        PostMessage Text2.hwnd, WM_KEYUP, VK_TAB, 0

    End If

End Sub
分享
文章分類(lèi)
聯(lián)系我們
聯(lián)系人: 王先生
Email: 18449932@qq.com
QQ: 18449932
微博: officecn01
移動(dòng)訪(fǎng)問(wèn)