Excel 2007 中的 Application.InputBox 方法

Posted

技术标签:

【中文标题】Excel 2007 中的 Application.InputBox 方法【英文标题】:Application.InputBox method in Excel 2007 【发布时间】:2016-06-16 12:56:17 【问题描述】:

几年前,我使用 Excel 97 编写了一个 VBA 程序,该程序使用了

Set R = Application.InputBox( Prompt etc. ... Type:=8) 

用户在打开的工作簿/工作表中选择单元格的方法。这在当时没有问题,但现在我正在修改 Excel 2007 的程序,它只有在用户输入 A1 格式地址时才有效。它不允许用户在打开的工作簿和工作表中移动,或滚动工作表,以找到他想要的单元格。

然而,奇怪的是,如果它位于宏中,它确实可以像宣传的那样工作,但只是在与宏相同的工作簿中使用鼠标选择一个单元格。

我想知道是否有其他人遇到过这个问题,他们是否找到了解决方法?

【问题讨论】:

那么代码在哪里? 代码位于一个 xlsm 文件中,该文件与要分析的其他工作簿一起打开。该代码位于该工作簿的 vba 项目中。我提到了将其放入目标工作簿中的宏的实验——我这样做主要是为了确保问题不在于代码本身。这说明清楚了吗?我可能不明白你的问题的含义。 【参考方案1】:

您的代码对我来说似乎很好。我从来没有在 Excel '97 中使用过这种方法,所以我不知道输入框是否显示不同。

我在 2007 年和 2013 年检查过它(将代码放在代码模块和工作表对象中),Application.InputBox(...,type:=8) 确实允许用户从打开的工作簿中选择工作表和范围。

唯一的区别是 2007 不允许用户导航离开显示输入框时处于活动状态的工作簿。

从范围对象中提取工作表有问题吗?这可以使用Set ws = r.WorksheetsheetName = r.Worksheet.Name 来完成。

希望这会有所帮助。

【讨论】:

到最后一段:不-我唯一的问题是通过单击(其他)打开的工作簿中的单元格来获取范围对象。由于用户已经从列表中选择了 wb 和 ws (我之所以这样说是因为我无法用鼠标将他带到那里)我会在调用 InputBox 方法之前尝试激活它,但我很确定我已经尝试过一段时间了.非常感谢您的想法。 我尝试激活 ws 但它没有出现 - 至少直到整个过程结束,在我想用鼠标选择单元格之后很久。我已经回到选择 A1 地址。

以上是关于Excel 2007 中的 Application.InputBox 方法的主要内容,如果未能解决你的问题,请参考以下文章

C#:Excel 2007 插件,如何挂钩 Windows 激活和停用事件

Excel Application操作指南

如何使用powershell以html格式保存excel 2007?

字符串中的正确函数(Excel 2007 VBA)

强制 Excel 2007 默认显示时间数据中的秒数

如何让 Excel 加载项 (Excel 2007) 中的用户定义函数与自动完成功能一起使用?