2013-04-22 6 views
-1

В основном мне нужно 2 ввода. Первый входной запрос попросит пользователя ввести значение, а затем запросить второй ящик ввода после того, как пользователь нажмет ok. Значение по умолчанию во втором ящике ввода будет значением одной ячейки справа от значения в первом ящике ввода. Это то, чего я хочу достичь, но проблема с полем ввода заключается в том, что кнопка «Отмена», которая выдает мне сообщение об ошибке или не будет выходить из нее каким-либо образом.EXCEL VBA InputBox Ok/Cancel

Так есть ли другие аналогичные подходы в достижении моей цели? Заранее большое спасибо!

+0

Что вы пробовали? Из моего опыта работы с VB6 кажется, что 'InputBox (« Prompt »,« TITLE »,« default »)' будет работать просто отлично – James

+0

Когда я нажимаю OK в первом ящике ввода, он переходит ко второму ящику ввода. Но если я нажму кнопку «Отмена» в первом ящике ввода, он не выйдет из под. –

+1

Есть ли у вас фрагменты кода, которые вы могли бы разместить? – James

ответ

2

InputBox(...) возвращает пустую строку "" всякий раз, когда нажата кнопка отмены.

Зная это, вы можете проверить, соответствует ли вход "" для каждого входа. Если в какой-то момент вы столкнетесь с отменой, вы не пойдете дальше.

Это показано ниже, используя вложенные операторы if.

Sub Macro1() 
    Dim x As String 
    Dim y As String 
    Dim yDefault As String 

    x = InputBox("Prompt One", "TITLE ONE") 

    If (x <> "") Then 
      yDefault = GetDefaultValue(x) 
      y = InputBox("Prompt Two", "TITLE TWO", yDefault) 

     If (y <> "") Then 
      MsgBox "X: " & x & vbCrLf & "Y: " & y, vbOKOnly, "RESULTS" 
     End If 
    End If 
End Sub 

Function GetDefaultValue(x As String) As String 
    ' Your custom logic to grab the default value (whatever cell) goes here 
    GetDefaultValue = "DEFAULT(" & x & ")" 
End Function 
0

Поскольку это значения, которые вы хотите, не используйте InputBox. Используйте Application.Inputbox. Если вы нажмете волшебную клавишу F1 в Excel, и вы напечатаете Application.Inputbox, тогда вы увидите какой-то волшебный текст из ниоткуда;)

Вот пример использования.

Ret = Application.InputBox(prompt := "Please enter a value", type := 1) 

Обратите внимание на тип 1.

Я могу дать вам точный ответ, но я уверен, что это поможет вам начать работу;) Если же не публикуйте назад :)

Смежные вопросы