5

我正在构建一个一开始就接受数字的 VB 应用程序。如果用户在任何输入框中按下取消按钮,我希望能够退出。代码是:

Private Sub Command1_Click()
Dim a, b, c, d As Integer
Dim response As Integer
Dim a1, b1, c1, d1 As String
a = InputBox("Enter Numerator 1")
b = InputBox("Enter Denominator 1")
c = InputBox("Enter Numerator 2")
d = InputBox("Enter Denominator 2")

a1 = Str(a)
b1 = Str(b)
c1 = Str(c)
d1 = Str(d)

If a1 <> "" And b1 <> "" And c1 <> "" And d1 <> "" Then
'All Actions
...
Else

 response = MsgBox("Are you sure you want to quit?", vbYesNo + vbQuestion, AdditionV1.0")
 If response = vbYes Then
 End
 Else
 Addition.Show
 End If

我已经尝试使用 StrPtr 并且它仍然不起作用。发生的情况是,即使我按取消,它仍然会显示错误消息。

帮助将不胜感激。

4

2 回答 2

7

StrPtr是要走的路。由于您没有显示相关代码,因此无法说明您做错了什么(但无论如何代码中有几个错误)。原则上,以下工作:

Dim a As String
a = InputBox("Enter Numerator 1")
If StrPtr(a) = 0 Then
    ' Nothing was entered.
End If

我怀疑您将检查应用于a1etc. 而不是原始变量。这不仅不起作用(Str强制字符串为非空),而且也没有任何意义:这些变量到底是干什么用的?

此外,您所有的变量声明都是错误的。以下:

Dim a, b, c, d As Integer

声明和as 。a_ 只会是一个. 为此,以及其他原因(可读性),切勿在一个语句中声明多个变量。始终单独声明它们。哦,使用有意义的名称。, , ,没有帮助。bcVariantdIntegerabcd

于 2012-01-01T10:37:04.340 回答
0

如果我正确理解您的问题,您希望在用户按下取消按钮时停止处理。

我建议做这样的事情(请注意,我将变量更改为来自 InputBox 的赋值的 a1、b1、c1、d1):

    Private Sub Command1_Click()
    Dim a, b, c, d As Integer
    Dim response As Integer
    Dim a1, b1, c1, d1 As String

    a1 = InputBox("Enter Numerator 1")
    if (a1 = "")
       exit sub
    endif

    b1 = InputBox("Enter Denominator 1")
    if (b1 = "")
       exit sub
    endif

    c1 = InputBox("Enter Numerator 2")
    if (c1 = "")
       exit sub
    endif

    d1 = InputBox("Enter Denominator 2")
    if (d1 = "")
       exit sub
    endif


    If a1 <> "" And b1 <> "" And c1 <> "" And d1 <> "" Then
    'All Actions
    ...
    Else

     response = MsgBox("Are you sure you want to quit?", vbYesNo + vbQuestion, AdditionV1.0")
     If response = vbYes Then
     End
     Else
     Addition.Show
     End If
于 2012-01-01T10:33:17.703 回答