Excel教程下载中心,Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,培训学习Office的最佳社区

 18 12
发新话题
打印

INPUTBOX 延迟输入     hits : 2440

INPUTBOX 延迟输入

大家知道,下面的代码(代码1)可以实现INPUTBOX的默认输入:

Sub macro1()
Dim s As String
s = InputBox("please enter a number", "information",123)
End Sub

另一段代码(代码2)则完全等待输入:

Sub macro1()
Dim s As String
s = InputBox("please enter a number", "information")
End Sub

现在的问题是,如何使得代码2 经过5秒钟的延迟,再默认输入“123”?

估计需要用到HOOK技术,多次实验均未成功,请大家帮忙(不许使用USERFORM模拟实现),多谢!!!

附:可能用到的API函数

Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


TOP

不会是这样吧?

Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Sub macro1()
    Dim s As String
    Sleep 5000
    t = 123
    s = InputBox("please enter a number", "information", t)
End Sub

祝愿:哥哥弟弟更加潇洒,姐姐妹妹天天年轻!

TOP

QUOTE:
以下是引用plxmm在2006-8-29 19:48:39的发言:

不会是这样吧?

Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Sub macro1()
    Dim s As String
    Sleep 5000
    t = 123
    s = InputBox("please enter a number", "information", t)
End Sub

不是这样的。

我的要求是弹出INPUTBOX窗口(此时是空文本框)后,停顿5秒钟,自动键入123。

TOP

呵呵,这几个API函数弄得晕人。好像在VBA中,取得句柄是比较难以实现的啊。
祝愿:哥哥弟弟更加潇洒,姐姐妹妹天天年轻!

TOP

引用:
現在的問題是,如何使得代碼2 經過5秒鍾的延遲,再默認輸入“123”?

類似嗎?

'---------------------------------------------------------------------------------------
' Module    : Module1
' DateTime  : 30/8/2006 01:03
' Author    :  
' Purpose   :
'---------------------------------------------------------------------------------------
' Base on chijanzen's code

Public Declare Function SetTimer Lib "user32" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long, _
    ByVal uElaspe As Long, _
    ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer Lib "user32" ( _
    ByVal hWnd As Long, _
    ByVal nIDEvent As Long) As Long
   
Dim TID As Long
Const Sec = 5    ' seconds


Sub Test()
    TID = SetTimer(0, 0, Sec * 1000, AddressOf CloseTest)
    s = InputBox("Please Enter a nubmer" & Chr(13) & Sec & "  Seconds Auto Close", "Information", 123)
    KillTimer 0, TID
    MsgBox s
End Sub


Sub CloseTest(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idevent As Long, _
    ByVal Systime As Long)
        Application.SendKeys "~", True
        KillTimer 0, TID
End Sub

[此贴子已经被作者于2006-8-30 1:18:08编辑过]

Have no passion for Excel especially at   "Home"

TOP

总结一下方法: 请参考:INPUTBOX 延迟输入的方法研究.http://club.excelhome.net/viewthread.php?tid=185695
Stanley Pan

TOP

非常感谢二位高人,代码运行成功

[此贴子已经被作者于2006-8-30 9:28:15编辑过]

TOP

QUOTE:
以下是引用stanleypan在2006-8-30 9:19:46的发言:
总结一下方法: 请参考:INPUTBOX 延迟输入的方法研究.http://club.excelhome.net/viewthread.php?tid=185695

優秀的研究作品 !!!

[em17]
Have no passion for Excel especially at   "Home"

TOP

请问贵宾和版主

如何让InputBox中默认选项不处于选择状态

 Dim InputA As String
    InputA = InputBox("" & Chr(13) _
     & "   请输入【年级】" & Chr(13) & "    高一、高二、高三" & Chr(13) _
      & "提示:", Default:="高")

我想让"高"在运行时不处于选择状态,即我不需按方向右键,直接输入或一或二或三,先表示感谢了.

TOP

Dim InputA As String
    InputA = InputBox("" & Chr(13) _
     & "   请输入【年级】" & Chr(13) & "    高一、高二、高三" & Chr(13) _
      & "提示:", Default:="")

InputA ="高" & InputA

10年编程经验,招龙岗学徒。QQ:859961886深圳龙岗南联http://nawong.excel2007.com.cn

TOP

 18 12
发新话题
本论坛言论纯属发表者个人意见,与Excel Home立场无关,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!