web-dev-qa-db-ja.com

VBAを使用してユーザーにセルを選択するよう要求する(別のシートにある場合があります)

私はExcelでVBAプロジェクトで作業しており、マクロの一部にユーザーにセルの範囲を選択するように指示して、*後でマクロで処理できるようにします。

*グラフの作成時、またはGUIを使用して関数を挿入するときに表示されるプロンプトのタイプ

例えばここに: 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はマウスでユーザーが選択した範囲の範囲を取得 と似ていますが、

  1. 上記のExcelの組み込みGUI機能を使用したい
  2. アクティブなワークシート以外のシート上の範囲を選択して参照できるようにする必要があります
13
Jonny

これは、上で示したビルトインを使用していませんが、収入プロンプトに続くセルの範囲を選択できます。

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

これは、 このMrExcelの答え で与えられた答えに基づいています。

使用方法は次のとおりです。

enter image description here

24
ChrisProsser

探しているのは、ダイアログボックス(コモンダイアログとも呼ばれます)です。残念ながら、 既存の組み込みオブジェクトに追加することはできません (少なくともVBAは使用していません)。

上記のように、InputBoxとFormsを使用してこの機能を模倣できます。それは、会社があなたが説明するタイプの機能を追加したExcelに基づいたプロプライエタリなプログラムを見たことがあるということです。ただし、これを実現できるDLLを作成するには、C++またはより深い言語を使用する必要があると思います

ダイアログについて注意する価値のあること:Excelには組み込みの Common File Dialog object library があり、既存のWindows APIダイアログを使用して一般的なファイルサーバーダイアログボックス(開く、保存、選択など)を作成できます。

0
DanK