Board logo

標題: 要如何強制驗證TextBox空白就停止 [打印本頁]

作者: Jared    時間: 2013-3-18 15:34     標題: 要如何強制驗證TextBox空白就停止

想請問各位大大
目前想將TextBox用驗證碼是否空白
如果空白就停止輸入
將畫面停格在輸入畫面
Dim A As Range


a1 = User.c1.Value
If a1 = "" Then MsgBox "第一欄不得空白": Exit Sub
If Application.CountBlank([U3:U99]) = 0 Then Range("U100") = a1: Exit Sub
For Each A In [U3:U99]
    If A = "" Then
        A.Value = a1
        Exit For
    End If
Next

但是我的程式改來改去
就算是空白會彈跳出警告視窗
還是會先將填好的資料寫入在Sheet
而發生空白錯誤以下的欄位才停止寫入

不知道該怎麼改才能完美驗證>"<
感激不盡!
作者: Jared    時間: 2013-3-19 09:55

回復 1# Jared

我附上一個測試檔案
當我只要第二欄空白
第一欄還是會寫入
要如何才能都填上驗證完才寫入呢?

    [attach]14392[/attach]
作者: Hsieh    時間: 2013-3-19 10:24

本帖最後由 Hsieh 於 2013-3-19 17:32 編輯

回復 2# Jared
  1. Sub test()
  2. Dim Ar, a1, a2, a3, i%
  3. a1 = TextBox1
  4. a2 = TextBox2
  5. a3 = TextBox3
  6. Ar = Array(a1, a2, a3)  '欄位儲存於陣列
  7. If a1 <> "" And a2 <> "" And a3 <> "" Then  '判斷所有值都不等於空白
  8.    i = 1   '第一列開始
  9.    Do Until Cells(i, 1) = ""  'A欄為空白則停止迴圈
  10.        i = i + 1  '向下一列
  11.    Loop
  12.    Cells(i, 1).Resize(, 3) = Ar  'A欄空白向右擴展成欄位數量
  13.    Else  '其中有空白值則執行以下程序
  14.    For i = LBound(Ar) To UBound(Ar)  '陣列索引值執行迴圈
  15.       If Ar(i) = "" Then MsgBox "欄位" & i + 1 & "空白未填寫"
  16.    Next
  17. End If
  18. End Sub
複製代碼

作者: Jared    時間: 2013-3-19 11:21

回復 3# Hsieh


    感謝大大詳解
    但欄位如果變多,例如有5個欄位要驗證
    是不是有什麼地方沒改到呢?
    就沒辦法 順利驗證和連續往下填寫資料了 >"<

    Sub test()
Dim Ar, a1, a2, a3, a4,a5,i %
a1 = TextBox1
a2 = TextBox2
a3 = TextBox3
a4 = TextBox4
a5 = TextBox5
Ar = Array(a1, a2, a3,a4,a5)
If a1 <> "" And a2 <> "" And a3 <> "" And a4 <> "" And a5 <> "" Then
   i = 1
   Do Until Cells(i, 1) = ""
       i = i + 1
   Loop
   Cells(i, 1).Resize(, 5) = Ar
   Else
   For i = 0 To 2
      If Ar(i) = "" Then MsgBox "欄位" & i + 1 & "空白未填寫"
   Next
End If
End Sub
作者: Jared    時間: 2013-3-19 15:29

回復 3# Hsieh


    想請問一下大大
    當我想要將寫入位置更改為B1 欄位開始
    為什麼就無法新增第二筆呢?
    將這行程式 Cells(i, 1).Resize(, 3) = Ar
    更改為          Cells(i, 2).Resize(, 3) = Ar
    程式就動不了了 >"<
作者: Jared    時間: 2013-3-19 15:57

我已經找到方法了(^口^)
將程式更改為

With Sheet10
   .Cells(.Rows.Count, 2).End(xlUp).Offset(1).Resize(, 5).Value = Ar
   End With

就可以往B2欄寫入資料了




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