Board logo

標題: [發問] 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]  (控制項失去駐點)
  1. 'Enter、Exit 事件
  2. 'Enter 主要發生在一個控制項,從同一表單上的另一個控制項取得駐點之前
  3. 'Exit 會在一個控制項失去駐點時發生。
  4. Option Explicit
  5. Dim Exit_Msg As Boolean                     '表單私用變數
  6. Private Sub TextBox32_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  7.     If Exit_Msg = True Then Exit Sub            '尚在輸入中, 此時如關閉表單,還是會執行此程序
  8.     If Not IsNumeric(TextBox32) Or TextBox32 < 40 Or TextBox32 > 50 Then
  9.         Cancel = True                           'True 表示應用程式須處理此事件,且駐點仍保留在目前控制項。
  10.         With TextBox32                          '選擇以輸入文字
  11.             .SelStart = 0
  12.             .SelLength = Len(.Text)
  13.        End With
  14.        MsgBox "TextBox32 須是 大於 40 和小於 50  "
  15.     End If
  16. End Sub
  17. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  18.     Exit_Msg = True
  19. End Sub
複製代碼

作者: bowwow1975    時間: 2013-6-20 12:19

回復 2# GBKEE

不好意思,之前的已用其他方法解決,但現在借用你的方法,出現了一點小問題

我把程式改為如下
  1. Private Sub TextBox34_Change()

  2. With Sheet4
  3. .Range("H4").Value = textbox34.Text
  4. End With
  5. End Sub
  6. ' 以上變更 textbox 就順便變更儲存格
  7. ' 以下就依照你的程式碼撰寫

  8. Private Sub TextBox34_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  9. Dim Exit_Msg As Boolean
  10.    
  11.     If Exit_Msg = True Then Exit Sub
  12.     If Not IsNumeric(TextBox32) Sheets(4).Range("h4") < Sheets(4).Range("C35") Or Sheets(4).Range("h4") > Sheets(4).Range("C36") Then
  13.     Cancel = True
  14.     'With textbox34
  15.     '    .SelStart = 0
  16.     '    .SelLength = Len(.Text)
  17.     '    End With
  18.         MsgBox "Np 須是 大於" & Sheets(4).Range("C35") & " 和小於 " & Sheets(4).Range("C34")
  19.     End If

  20. End Sub

  21. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

  22.     Exit_Msg = True
  23. End Sub
複製代碼
不管我 textbox34 輸入什麼值,Msgbox 都會出現
最後我關掉視窗,Msgbox 還會再出現一次~~
請問這要怎麼解?

感激不盡!
作者: bowwow1975    時間: 2013-6-20 15:01

回復 3# bowwow1975

不好意思,已解決!!!
感謝有關注的大大們!
作者: GBKEE    時間: 2013-6-20 15:10

回復 4# bowwow1975
如何解決 交流一下
3#的錯誤
  1. Option Explicit
  2. Dim Exit_Msg As Boolean   '此變數是表單模組的私用變數,須是置於表單般模組頂部
  3. Private Sub TextBox34_Change()
  4.     With Sheet4
  5.         .Range("H4").Value = TextBox34.Text
  6.     End With
  7. End Sub
  8. Private Sub TextBox34_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  9.     If Exit_Msg = True Then Exit Sub
  10.     If Not IsNumeric(TextBox34) Or Sheets(4).Range("h4") < Sheets(4).Range("C35") Or Sheets(4).Range("h4") > Sheets(4).Range("C34") Then
  11.     '*****************************************************************************************************************
  12.     '這裡有矛盾 C34,C35, C36 數據是哪裡才正確!!!!
  13.     'If Not IsNumeric(TextBox32) Sheets(4).Range("h4") < Sheets(4).Range("C35") Or Sheets(4).Range("h4") > Sheets(4).Range("C36") Then
  14.     'MsgBox "Np 須是 大於" & Sheets(4).Range("C35") & " 和小於 " & Sheets(4).Range("C34")
  15.     '******************************************************************************************************************
  16.     Cancel = True
  17.     'With textbox34
  18.     '    .SelStart = 0
  19.     '    .SelLength = Len(.Text)
  20.     '    End With
  21.         MsgBox "Np 須是 大於" & Sheets(4).Range("C35") & " 和小於 " & Sheets(4).Range("C34")
  22.     End If
  23. End Sub
  24. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  25.     Exit_Msg = True
  26. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)