Używam aplikacji.Inpersbox, aby uzyskać numer od użytkownika. Dalej w kodzie mnożę zakres komórek z tym numerem.

Moim problemem jest to, że chcę wiedzieć, czy numer został napisany ręcznie lub wybrałem, wybierając komórkę w arkuszu (to oznacza, że jeśli użytkownik napisał "123", a następnie "123", a jeśli wybrał zakres, a następnie zwrócił $ za $ za $ 1 ).

Kod:

Dim output As Variant

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

Proszę o wszelkie rady?

1
MrZH6 22 luty 2019, 17:01

2 odpowiedzi

Najlepsza odpowiedź

Nie sądzę, że możesz to zrobić. Albo ustawisz typ do 8, a następnie nie możesz wprowadzić numerów lub ustawić go na 1, a następnie nie możesz wprowadzić odniesień. Jeśli łączysz go do 9, nadal masz problem z zestawem lub bez zestawu.

' 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)

Myślę, że najczystszym sposobem rozwiązania jest wdrożenie formularza użytkownika z kontrolą refedit.

1
Sam 22 luty 2019, 14:59

Tak więc, z Application.InputBox nie byłem w stanie osiągnąć pożądanej funkcjonalności, although nadal myślę, że jest jakoś ... :-)

To właśnie wymyśliłem (używając formatu użytkownika z refeditem i innymi narzędziami):

enter image description here

Nie zwracaj uwagi na obraz w tle. Po prostu wypróbowałem rzeczy ... :-) Chociaż, bardzo mi się podoba :-)

Jest to kod dla CommandButton: (Ref_input bycia refeditem, TXB_Number the 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
MrZH6 24 luty 2019, 20:16