2012-01-01 35 views
3

我正在構建一個VB應用程序,它在開始時接受數字。如果用戶在任何輸入框中按下取消按鈕,我希望能夠退出。 的代碼是:檢測取消在VB6輸入框中按下

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,它還是老樣子行不通的嘗試。即使我按下「取消」,它仍會顯示錯誤信息。

幫助將真正被讚賞。

回答

5

StrPtr是要走的路。由於您沒有顯示相關代碼,因此沒有告訴您做了什麼錯誤(但代碼中存在幾處錯誤)。原則上,以下工作:

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

我懷疑你應用的檢查a1等來代替原來的變量。這不僅不行(Str強制字符串非空),它也沒有意義:這些變量是什麼?

此外,你所有的變量聲明都是錯誤的。以下:

Dim a, b, c, d As Integer 

聲明abcVariant。只有d將是Integer。爲此以及其他原因(可讀性),從不在一個語句中聲明多個變量。總是單獨申報。哦,並使用有意義的名字。 abcd沒有幫助。

+0

爲什麼StrPtr(a)Len(a)足夠了? – Muis 2013-06-11 13:00:38

+0

@Joshua因爲*不夠*。你想區分* empty * input和* no *(即Cancel按鈕)。對於Len(a)='的測試與'a =「」'相同,正如OP所指出的那樣,沒有做出必要的區分。 – 2013-06-11 13:55:39

+0

我個人從來沒有遇到任何使用inputbox的代碼,在這兩個代碼之間進行區分非常重要。在用戶輸入不是100%要求的情況下,輸入框是一個非常糟糕的解決方案,而在所有其他情況下,空輸入可用於取消。而且OP也不想從這個問題中區分我。但是現在我明白你爲什麼使用StrPtr了。 – Muis 2013-06-11 20:30:56

0

如果我正確理解你的問題,你想停止處理用戶按下取消按鈕的時刻。

我建議做這樣的事情(請注意,我改變了變量A1,B1,C1,轉讓D1從的InputBox):

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 
+0

謝謝你們,我將分子和分母的數據類型改爲字符串,StrPtr創造了奇蹟。 Konrad,我開始學習Python,這僅僅是我在幾個月前試圖嘗試並且今天偶然發現的一個問題。儘管如此,我已經將所有提示都考慮在內了,並將按照您從現在開始的說法進行操作。 另外,你可以指導我從哪裏開始學習Python,或者我應該首先學習Python還是C++。 我是來自印度的巴拉特,我在九年級。 – 2012-01-01 11:26:12