標題:
TextBox如何設定只能是整數?
[打印本頁]
作者:
acdx
時間:
2012-12-5 01:09
標題:
TextBox如何設定只能是整數?
我設計一個表單 其中TextBox作為輸入介面 由於該參數必須為正整數該如何限制TextBox之格式
我希望寫成當輸入為正整數以外字元則顯示"必須為正整數"
謝謝
作者:
GBKEE
時間:
2012-12-5 07:40
回復
1#
acdx
Enter、Exit 事件
Enter 主要發生在一個控制項,從同一表單上的另一個控制項取得駐點之前;Exit 會在一個控制項失去駐點時發生。
Option Explicit
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1) Then
TextBox1 = Abs(Int(TextBox1))
Else
TextBox1 = ""
End If
End Sub
複製代碼
作者:
acdx
時間:
2012-12-5 19:32
該寫法雖然可以解決非整數的問題 但如果遇到使用者輸入數字以外字元例如"h","好"
該如何讓程式自動判別這些非數字字元及自動跳出而不致發生程式錯誤?
作者:
c_c_lai
時間:
2012-12-5 20:06
回復
3#
acdx
TextBox1 = "" 已經給你答案了!
作者:
acdx
時間:
2012-12-6 18:09
回復
4#
c_c_lai
不好意思 我上面可能沒表達清楚
現在遇到的問題是TextBox所輸入的值被認定為文字
假設我輸入5 則TextBox="5"(由監看式裡看到的值) 而TextBox在程式中必須是正整數才可正常執行 我希望我的程式能夠判別/提醒使用者,當TextBox輸入為負數或小數時則會出現警告視窗因此我寫成這樣: (當TextBox1輸入8,TextBox2輸入12)
If IsNumeric(TextBox1) = False Or IsNumeric(TextBox2) = False
Then
MsgBox "請輸入數字"
Exit Sub
ElseIf TextBox1 <> Abs(Int(TextBox1)) Or TextBox2 <> Abs(Int(TextBox2)) Then
MsgBox "請輸入整數"
Exit Sub
End If
藍色為其執行結果
由監看式裡: TextBox1="8", Abs(Int(TextBox1)) =8, TextBox2 ="12", Abs(Int(TextBox2)) =12
故:TextBox1 不等於Abs(Int(TextBox1)) 所以程式跳開-->這該如何解決?
另外程式中必須TextBox1<TextBox2所以我還寫了條件式確保這關係成立但卻被判斷為 "8">"12"-->所以程式又跳開 這些問題困擾我好幾天了
作者:
Hsieh
時間:
2012-12-6 19:10
回復
5#
acdx
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If CStr(Val(TextBox1)) <> TextBox1 Or Val(TextBox1) < 0 Then MsgBox "必須為正整數": Exit Sub
MsgBox TextBox1
End Sub
複製代碼
作者:
c_c_lai
時間:
2012-12-7 08:08
回復
5#
acdx
Sub Test()
' 假設 [B1] 欄位屬性為文字;輸入值: 10、或是 10ABC
' 則此時 [B1] 為 Not IsNumeric([B1])
If IsNumeric([B1]) Then
[B3] = Abs(Int([B1]))
Else
If Val([A1]) > 0 Then
[B3] = Abs(Int(Val([B1]))) ' 取得數值 10
Else
[B3] = "" ' 該欄位值為非數值之文字串
MsgBox "請輸入數字"
End If
End If
End Sub
複製代碼
如此舉例,了解否?
作者:
GBKEE
時間:
2012-12-7 09:32
回復
5#
acdx
Option Explicit
Dim Msg As Boolean '預設值: False
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Msg = True '表單關閉:變數設定
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) '表單關閉後還會執行此程式
If Msg = False Then If Text檢查(TextBox1) Then Cancel = True
'Cancel: False 表示控制項不處理事件(預設);True 表示應用程式須處理此事件,且駐點仍保留在目前控制項。
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Msg = False Then If Text檢查(TextBox2) Then Cancel = True
End Sub
'如還有TextBox 依樣畫葫蘆
'Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
' If Msg = False Then If Text檢查(TextBox3) Then Cancel = True
'End Sub
Private Function Text檢查(Box As MSForms.TextBox) As Boolean
Dim S As Integer
If Abs((Int(Val(Box))) <> Box Or Box < 0) Then
S = InStr(Box, ".")
Box.SelStart = IIf(Mid(Box, 1, 1) = "-", 0, S - IIf(S > 0, 1, 0))
Box.SelLength = IIf(Mid(Box, 1, 1) = "-", 1, Len(Box) - S + 1)
MsgBox "需輸入正整數"
Text檢查 = True
End If
End Function
複製代碼
作者:
acdx
時間:
2012-12-7 14:53
解決了
謝謝大家的幫忙
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)