问题
I'm working in Excel on a VBA project, and want part of my macro to prompt the user to select a range of cells*, which the macro can later do stuff with.
*The type of prompt you get when creating a chart, or using a GUI to insert a function
e.g. here:

and here:

I'm therefor looking for something along the lines of
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
Is it possible to access built-in Excel functionality to perform what I refer to as: CreateFunctionArgumentsPrompt()
Note: this is similar to SO question excel vba get range of user selected range by mouse but differs in that
- I want to use the built in GUI functionality of Excel as displayed above
- I need to be able to select and refer to a range on a sheet other than the active worksheet
回答1:
This isn't using the built in that you showed above, but does allow you to select a range of cells following an income prompt:
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 is based on the answer given in this MrExcel answer.
Here is how it looks in use:

回答2:
What you are looking for is a dialog box (also called a common dialog). Unfortunately you cannot add one to the existing built in objects (at least not using VBA).
As mentioned above you can mimic this functionality using InputBox and Forms. That said I have seen proprietary programs that are based on Excel where the company added the type of functionality you describe. However, I believe you have to use C++ or a deeper language to create DLLs that can accomplish this
One thing worth noting about dialogs: Excel has a built in Common File Dialog object library which allows you to create common file server dialog boxes (such as Open, Save & Select) using existing Windows API dialogs.
来源:https://stackoverflow.com/questions/22812235/using-vba-to-prompt-user-to-select-cells-possibly-on-different-sheet