【求助】vb:禁止無內容輸入



贊助商連結


金田一
2003-03-12, 04:54 PM
我想寫一個程式如下:
有二個textbox 和一個command button
在textbox內輸入資料後按command button算出其乘起來的數,顯示在表單上且若使用者只有輸入資料至其中一個textbox則以msgbox顯示出"請輸入完整的數值"且後將游標顯示在其無資料的textbox上.

謝謝回答

贊助商連結


tgs_2
2003-03-12, 05:22 PM
最初由 金田一 發表
我想寫一個程式如下:
有二個textbox 和一個command button
在textbox內輸入資料後按command button算出其乘起來的數,顯示在表單上且若使用者只有輸入資料至其中一個textbox則以msgbox顯示出"請輸入完整的數值"且後將游標顯示在其無資料的textbox上.

謝謝回答
最簡單的方法就是在Command button 的Click事件中,去判斷TextBox是否為空值假設TextBox分別為Text1和Text2那麼在Click事件中,我們可以下以下的程式碼
if trim(Text1 & "") = space(0) then
call msgbox("請輸入完整的數字",vbinformation)
text1.setfocus
exit sub
end if
if trim(Text2 & "") = space(0) then
call msgbox("請輸入完整的數字",vbinformation)
text2.setfocus
exit sub
end if
之後再接上你的算術處理式子就可以了。

ivantw
2003-03-12, 05:42 PM
拉兩個TextBox(Text1、Text2)元件及一個CommandButton(Command1),於Command1_Click撰寫以下程式。

備註:由於排版問題,請勿直接貼上(內含全形字元)

Private Sub Command1_Click()
     If IsNumeric(Text1.Text) = False Then
       MsgBox "請輸入數值一", vbCritical + vbOKOnly
       Text1.SetFocus
       Exit Sub
     End If

     If IsNumeric(Text2.Text) = False Then
       MsgBox "請輸入數值二", vbCritical + vbOKOnly
       Text2.SetFocus
       Exit Sub
     End If

     MsgBox Trim(Text1.Text) & " x " & Trim(Text2.Text) & " = " & Trim(Val(Text1.Text) * Val(Text2.Text)), vbInformation + vbOKOnly, "答案"
End Sub

金田一
2003-03-12, 10:18 PM
謝謝回答
我是新手所以還有一些問題要問...
if trim(Text1 & "") = space(0) then


If IsNumeric(Text1.Text) = False Then
請問這是如何去判斷的?
謝謝

ivantw
2003-04-03, 02:07 AM
最初由 金田一 發表
謝謝回答
我是新手所以還有一些問題要問...
if trim(Text1 & "") = space(0) then


If IsNumeric(Text1.Text) = False Then
請問這是如何去判斷的?
謝謝

抱歉,現在才看到這一篇,先來個指令介紹:
Trim() 去除字串頭尾空白
Text1 & "" 兩字串相加
Space(N) 傳回長度 N 的字串,內容則為空白
IsNumeric(expression) 傳回T/F值,用以指示expression內含值是否為合法之數字


第一種方式為將 Text1 所輸入的值與 "" 作字串上的結合,並以Trim指令,去除頭尾之空白,並與長度為0之字串比較,若成立則代表無輸入資料。此一方式有一缺點,若輸入值為A~Z之英文數字,而後面又未加以檢查,則在兩值相乘時,會產生Fail。


第二種方式則是將 Text1 所輸入之值,直接以 IsNumeric 判斷,若所輸入值有不合法字元(如A~Z等)或長度為零,則傳回 False ,因此可以以一行指令,檢查無輸入或輸入不合法字元。

其實也可以在撰寫時,考量讓使用者只能輸入0~9及.這樣可以進一步使輸入值得以是正確的數值資料。