Передайте выбор пользователя из InputBox для использования в качестве аргумента для Application.Run - PullRequest
0 голосов
/ 22 января 2020

Как передать то, что пользователь выбирает в качестве аргумента для Application.Run?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Sub Correlation()
Dim UserRange As Range
Dim UserSelect As Variant

'user selects the range
Set UserRange = Application.InputBox(Title:="Correlation Analysis", Prompt:="Select range", Type:=8)
     UserSelect = Selection.Value

'function returns matrix of correlation coefficients based on the selected range
Application.Run "ATPVBAEN.XLAM!Mcorrel", Worksheets("VBA").Selection.Value, Worksheets("Correl").Range("$a$2"), "C", True

End Sub

1 Ответ

0 голосов
/ 22 января 2020

Выбранный диапазон пользователя находится в UserRange, если вы выполните следующее. Обратите внимание, что я добавил некоторую обработку ошибок, поэтому, если пользователь нажимает «Отмена», она завершается.

Option Explicit

Public Sub Correlation()
    'user selects the range
    On Error Resume Next 'error handling so pressing cancel does not error
    Dim UserRange As Range
    Set UserRange = Application.InputBox(Title:="Correlation Analysis", Prompt:="Select range", Type:=8)

    If UserRange Is Nothing Then Exit Sub  'user pressed cancel
    On Error GoTo 0 'always re-activacte error reporting!!!


    'UserRange now referst to the selected range of the user
    Debug.Print UserRange.Address
End Sub

Затем можно использовать переменную UserRange, чтобы ввести ее в качестве параметра

Application.Run "ATPVBAEN.XLAM!Mcorrel", UserRange
'adjust it to your need.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...