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)
10841

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

但有否其牠辦法來(lái)實(shí)現(xiàn) 有兩箇 textbox 控件  在 第一箇 textbox 輸入完瞭後 按 迴車(chē) (enter ) 焦點(diǎn)轉(zhuǎn)移到 第二箇 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)訪問(wèn)