【问题标题】:SendKeys to Excel Input Box (VBA)SendKeys 到 Excel 输入框 (VBA)
【发布时间】:2018-03-22 00:26:29
【问题描述】:

我要做的是运行一个 VBA 文件,该文件打开一个 Excel 工作簿,使用输入框启动一个宏,在该输入框中输入文本,按 Enter,然后宏继续运行。

到目前为止,我所拥有的是“GetData”是宏的名称:

strPath = "C:\Users\Test\Desktop\ExcelFile.xlsm" 
strMacro = "GetData"

Set objApp = CreateObject("Excel.Application") 
objApp.Visible = True

Set wbToRun = objApp.Workbooks.Open(strPath) 
objApp.Run strMacro

objApp.SendKeys "Sample"
objApp.SendKeys "~"

我遇到的问题是 SendKeys 直到宏运行完成后才会激活。输入框出现后,它就一直呆在那里,直到我关闭它。这会导致宏什么都不做,然后将单词“Sample”输入到单元格中,然后按下“Enter”。

我的问题是:如何让 SendKeys 将值输入到输入框中?

【问题讨论】:

  • 你能把宏'strmacro'改成类似strfunction(inputboxtext as string)这样的函数,然后在调用函数时在输入框中发送你想要的文本吗?当然,那时就不再需要输入框了。

标签: vba excel


【解决方案1】:

您不要在InputBox 上使用SendKeys,您只需指定一个默认值:

x = InputBox("Prompt", "Title", "Default Value")

如果这不能满足您的需求,那么它会变得有点复杂。让您的调用程序在调用宏之前将值写入文件,然后让宏将该文件读入一个变量,InputBox 然后将其用作其默认值。

但是,如果它也是“按 Enter”,那么首先使用 InputBox 有什么意义?好像没什么意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多