標題:
[發問]
Textbox 兩位數的設定
[打印本頁]
作者:
bowwow1975
時間:
2012-7-20 09:44
標題:
Textbox 兩位數的設定
想請教一下,我有一個 textbox,希望別人輸入的範圍要大於 40 和小於 50,
如果不是的話,要 show 出一個表單提醒別人重新輸入,程式如下:
Private Sub textbox32_Change()
If textbox32.Value > 50 or textbox32.Value < 40 Then
UserForm2.Show 'Please fill in 40~50.
textbox32.Value = ""
End If
End Sub
但是 <40 這一項,只要 key in 進一個個位數,警告表單馬上就浮現~~~
這要怎麼辦?
感謝大大幫忙~~
作者:
GBKEE
時間:
2012-8-25 16:50
回復
1#
bowwow1975
TextBox32 輸入後按 [Enter] (控制項失去駐點)
'Enter、Exit 事件
'Enter 主要發生在一個控制項,從同一表單上的另一個控制項取得駐點之前
'Exit 會在一個控制項失去駐點時發生。
Option Explicit
Dim Exit_Msg As Boolean '表單私用變數
Private Sub TextBox32_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Exit_Msg = True Then Exit Sub '尚在輸入中, 此時如關閉表單,還是會執行此程序
If Not IsNumeric(TextBox32) Or TextBox32 < 40 Or TextBox32 > 50 Then
Cancel = True 'True 表示應用程式須處理此事件,且駐點仍保留在目前控制項。
With TextBox32 '選擇以輸入文字
.SelStart = 0
.SelLength = Len(.Text)
End With
MsgBox "TextBox32 須是 大於 40 和小於 50 "
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Exit_Msg = True
End Sub
複製代碼
作者:
bowwow1975
時間:
2013-6-20 12:19
回復
2#
GBKEE
不好意思,之前的已用其他方法解決,但現在借用你的方法,出現了一點小問題
我把程式改為如下
Private Sub TextBox34_Change()
With Sheet4
.Range("H4").Value = textbox34.Text
End With
End Sub
' 以上變更 textbox 就順便變更儲存格
' 以下就依照你的程式碼撰寫
Private Sub TextBox34_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Exit_Msg As Boolean
If Exit_Msg = True Then Exit Sub
If Not IsNumeric(TextBox32) Sheets(4).Range("h4") < Sheets(4).Range("C35") Or Sheets(4).Range("h4") > Sheets(4).Range("C36") Then
Cancel = True
'With textbox34
' .SelStart = 0
' .SelLength = Len(.Text)
' End With
MsgBox "Np 須是 大於" & Sheets(4).Range("C35") & " 和小於 " & Sheets(4).Range("C34")
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Exit_Msg = True
End Sub
複製代碼
不管我 textbox34 輸入什麼值,Msgbox 都會出現
最後我關掉視窗,Msgbox 還會再出現一次~~
請問這要怎麼解?
感激不盡!
作者:
bowwow1975
時間:
2013-6-20 15:01
回復
3#
bowwow1975
不好意思,已解決!!!
感謝有關注的大大們!
作者:
GBKEE
時間:
2013-6-20 15:10
回復
4#
bowwow1975
如何解決 交流一下
3#的錯誤
Option Explicit
Dim Exit_Msg As Boolean '此變數是表單模組的私用變數,須是置於表單般模組頂部
Private Sub TextBox34_Change()
With Sheet4
.Range("H4").Value = TextBox34.Text
End With
End Sub
Private Sub TextBox34_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Exit_Msg = True Then Exit Sub
If Not IsNumeric(TextBox34) Or Sheets(4).Range("h4") < Sheets(4).Range("C35") Or Sheets(4).Range("h4") > Sheets(4).Range("C34") Then
'*****************************************************************************************************************
'這裡有矛盾 C34,C35, C36 數據是哪裡才正確!!!!
'If Not IsNumeric(TextBox32) Sheets(4).Range("h4") < Sheets(4).Range("C35") Or Sheets(4).Range("h4") > Sheets(4).Range("C36") Then
'MsgBox "Np 須是 大於" & Sheets(4).Range("C35") & " 和小於 " & Sheets(4).Range("C34")
'******************************************************************************************************************
Cancel = True
'With textbox34
' .SelStart = 0
' .SelLength = Len(.Text)
' End With
MsgBox "Np 須是 大於" & Sheets(4).Range("C35") & " 和小於 " & Sheets(4).Range("C34")
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Exit_Msg = True
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)