2013-04-22 407 views
-1

基本上我需要2个输入框。首先输入框会要求用户输入一个值,然后在用户单击确定后提示第二个输入框。第二个输入框中的默认值将是第一个输入框中值的右侧一个单元格的值。这是我想要实现的,但inputbox的问题是,取消按钮,它会抛出错误消息或不会以任何方式退出子。EXCEL VBA输入框确定/取消

那么在实现我的目标方面还有其他类似的方法吗?提前感谢!

+0

你有什么试过?根据我对VB6的经验,似乎'InputBox(“Prompt”,“TITLE”,“default”)'可以正常工作 – James 2013-04-22 17:55:16

+0

当我在第一个输入框上单击确定时,它将转到第二个输入框。但是,如果我点击第一个输入框上的取消按钮,它不会退出子。 – 2013-04-22 18:02:20

+1

你有任何可以发布的代码片段吗? – James 2013-04-22 18:03:18

回答

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。如果您在Excel中按魔术键F1,并且输入Application.Inputbox,则会看到一些不可思议的文字;

以下是一个示例用法。

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

请注意类型1

我可以给你一个确切的答案,但我相信这会让你开始;)如果不是,然后回发:)