【问题标题】:Using VBA to prompt user to select cells (possibly on different sheet) [duplicate]使用 VBA 提示用户选择单元格(可能在不同的工作表上)[重复]
【发布时间】:2014-04-02 21:47:47
【问题描述】:

我在 Excel 中处理 VBA 项目,并希望我的部分宏提示用户选择一系列单元格*,宏稍后可以处理这些单元格。

*创建图表或使用 GUI 插入函数时得到的提示类型

例如这里:

这里:

我正在寻找类似的东西

Sub MyMacro()
    MsgBox "Please select data range"

    ' allow user to select range (as images above)
    CreateFunctionArgumentsPrompt()    

    'do stuff with user selected range of cells
    ...
End Sub

是否可以访问内置的 Excel 功能来执行我所说的:CreateFunctionArgumentsPrompt()

注意:这类似于 SO 问题 excel vba get range of user selected range by mouse,但不同之处在于

  1. 我想使用上面显示的 Excel 的内置 GUI 功能
  2. 我需要能够选择和引用活动工作表以外的工作表上的范围

【问题讨论】:

标签: vba excel excel-2010


【解决方案1】:

这没有使用您上面显示的内置,但允许您在收入提示后选择一系列单元格:

Sub RangeSelectionPrompt()
    Dim rng As Range
    Set rng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)

    MsgBox "The cells selected were " & rng.Address
End Sub

这是基于this MrExcel answer中给出的答案。

这是它在使用中的样子:

【讨论】:

  • 这段代码只有一个问题。如果选择来自不同的工作表或不同的工作簿,则返回的范围地址不是完全限定的。因此,您也必须注意这一点:) 您可能希望查看我在问题下方发布的链接...
  • 这太棒了!正是我想要的,谢谢!
  • @Siddharth Rout — 我刚刚测试了这个解决方案,rng.Worksheet.Namerng.Worksheet.Parent.Name(检查工作簿)都返回了工作表和工作簿名称,即使我在不​​同的工作表或工作簿上选择了一个范围.
  • Type:=8,,,,,,,,8) 相比更容易阅读
【解决方案2】:

您正在寻找的是一个对话框(也称为普通对话框)。不幸的是你cannot add one to the existing built in objects(至少不使用VBA)。

如上所述,您可以使用 InputBox 和 Forms 模拟此功能。也就是说,我看到了基于 Excel 的专有程序,该公司在其中添加了您描述的功能类型。但是,我相信您必须使用 C++ 或更深的语言来创建可以完成此操作的 DLL

关于对话框值得注意的一点:Excel 有一个内置的Common File Dialog object library,它允许您使用现有的 Windows API 对话框创建通用文件服务器对话框(例如打开、保存和选择)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2012-05-15
    • 2014-05-04
    • 2017-04-03
    • 1970-01-01
    相关资源
    最近更新 更多