目から鱗…
そうか、SendKeysが怪しいのならkeybd_eventでTABをシュミレートしてやればいいのか…気づかない私はアホです。
デフォルトボタンを使った方法より、こちらの方がスマートですね。(楽だし)
'--------------------------------------------------------
' Form
'--------------------------------------------------------
Private Sub Form_Load()
Me.KeyPreview = True
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Call NextPrevFocus(KeyAscii)
End Sub
'--------------------------------------------------------
' Module
'--------------------------------------------------------
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const KEYEVENTF_EXTENDEDKEY = &H1
Public Const KEYEVENTF_KEYUP = &H2
Public Const VK_TAB = &H9 '[TAB]
Public Const VK_SHIFT = &H10 '[Shift]
Sub NextPrevFocus(KeyAscii As Integer)
Select Case KeyAscii
Case vbKeyReturn
Call keybd_event(VK_TAB, 0, 0, 0)
Call keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
Case vbKeyEscape
Call keybd_event(VK_SHIFT, 0, 0, 0)
Call keybd_event(VK_TAB, 0, 0, 0)
Call keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0)
Call keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0)
End Select
End Sub
DownLoad vbtips110.lzh 2KB (VB6.0)