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

时间:2014-04-02 12:56:44

标签: vba excel-vba excel-2010 excel

我正在使用Excel上的VBA项目,并希望我的部分宏提示用户选择一系列单元格*,宏可以在以后进行处理。

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

e.g。这里: Screengrab showing required functionality - the Excel 'Sum' Function Arguments pop-up

在这里: Screengrab showing required functionality - the Excel Function Arguments pop-up

我在那里寻找符合

的内容
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. 我需要能够选择并引用活动工作表以外的工作表上的范围

2 个答案:

答案 0 :(得分:23)

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

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中给出的答案。

以下是它的使用方式:

enter image description here

答案 1 :(得分:0)

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

如上所述,您可以使用InputBox和Forms模仿此功能。这就是说我见过基于Excel的专有程序,公司在那里添加了你描述的功能类型。但是,我相信您必须使用C ++或更深层次的语言来创建可以实现此目的的

有一点值得注意的是对话框:Excel内置Common File Dialog object library,允许您使用现有的Windows API对话框创建公共文件服务器对话框(如Open,Save& Select)。