使用VBA提示用户选择单元格(可能在不同的工作表上)

使用VBA提示用户选择单元格(可能在不同的工作表上),vba,excel,excel-2010,Vba,Excel,Excel 2010,我正在Excel中处理一个VBA项目,希望宏的一部分能够提示用户选择一个单元格范围*,宏稍后可以使用该单元格进行处理 *创建图表或使用GUI插入函数时得到的提示类型 e、 g.此处: 在这里: 因此,我在寻找类似于 Sub MyMacro() MsgBox "Please select data range" ' allow user to select range (as images above) CreateFunctionArgumentsPrompt()

我正在Excel中处理一个VBA项目,希望宏的一部分能够提示用户选择一个单元格范围*,宏稍后可以使用该单元格进行处理

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

e、 g.此处:

在这里:

因此,我在寻找类似于

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的内置GUI功能
  • 我需要能够选择和引用工作表上的范围,而不是活动工作表

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

    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
    
    这是基于中给出的答案

    以下是它在使用中的外观:


    您要查找的是一个对话框(也称为通用对话框)。不幸的是,您(至少不使用VBA)

    如上所述,您可以使用InputBox和表单模拟此功能。也就是说,我见过基于Excel的专有程序,公司在其中添加了您描述的功能类型。但是,我相信您必须使用C++或更深层次的语言来创建能够完成这个

    的DLL。
    对话框有一点值得注意:Excel有一个内置对话框,允许您使用现有的Windows API对话框创建常见的文件服务器对话框(如打开、保存和选择)。

    我找到了这个链接:这可能很有帮助此代码只有一个问题。如果所选内容来自不同的工作表或不同的工作簿,则返回的范围地址不是完全限定的。所以你也需要注意:)你可能想看看我在问题下面发布的链接……这太棒了!正是我想要的,谢谢@Siddharth Rout-我刚刚测试了这个解决方案,并且
    rng.Worksheet.Name
    rng.Worksheet.Parent.Name
    (用于检查工作簿)返回了工作表和工作簿名称,即使我在不同的工作表或工作簿上选择了一个范围。更容易阅读
    类型:=8