VBA - Возвращение диапазона или числа из Applilcation.InputBox - PullRequest
0 голосов
/ 22 февраля 2019

Я использую Applilcation.InputBox для получения номера от пользователя.Далее в коде я умножаю диапазон ячеек на это число.

Моя проблема в том, что я хочу узнать, было ли число написано вручную или выбрано путем выбора ячейки на листе (это означает, что если пользовательнаписал «123», затем «123», и если он выбрал диапазон, верните $ A $ 1).

Код:

Dim output As Variant

Set output = Application.InputBox("Enter Number", "Number for multyplying")

Любой совет, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Итак, с Application.InputBox я не смог достичь желаемой функциональности, хотя я все еще думаю, что это возможно как-то ...: -)

Это то, что я придумал (используя UserFormс RefEdit и другими инструментами):

enter image description here

Не обращайте внимания на изображение на заднем плане.Я просто пробовал кое-что ... :-) Тем не менее, мне это все-таки очень нравится: -)

И вот код для commandButton: (ref_Input - RefEdit, txb_number - TextBox)

Public gNmr As Variant

Private Sub cmd_OK_Click()
Dim adr As String

If ref_Input.Value <> vbNullString And txb_number.Value <> vbNullString Then
    MsgBox "Choose just one option, please.", , "Wrong input"
    Exit Sub
Else
    If ref_Input.Value = vbNullString And txb_number.Value = vbNullString Then
        MsgBox "No input, please try again.", , "Wrong input"
        Exit Sub
    Else
        If txb_number.Value = vbNullString Then
            adr = ref_Input.Value
            gNmr = adr
        Else
            If ref_Input.Value = vbNullString Then
            gNmr = txb_number.Value
            End If
        End If
    End If
End If

Unload Me

End Sub
0 голосов
/ 22 февраля 2019

Я не думаю, что вы можете сделать это.Либо вы устанавливаете тип на 8, а затем вы не можете вводить числа, либо вы устанавливаете его на 1, а затем вы не можете вводить ссылки.Если вы объедините его с 9, у вас все еще будет проблема с Set или без Set.

' Works for ranges
Set Output = Application.InputBox("Enter Number", "Number for multyplying", , , , , , 8)

' Works for literals
Output = Application.InputBox("Enter Number", "Number for multyplying", , , , , , 1)

' Could have worked for both, but it doesn't
Set Output = Application.InputBox("Enter Number", "Number for multyplying", , , , , , 9)

Я думаю, что самый простой способ решить эту проблему - реализовать UserForm с элементом управления RefEdit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...