[問題] vba發現表單有空白,跳出msbox,並停止

看板Office作者 (給開司一罐蘇格登)時間8年前 (2016/09/22 18:40), 8年前編輯推噓1(1036)
留言37則, 3人參與, 最新討論串1/1
(若是和其他不同軟體互動之問題 請記得一併填寫) 軟體: 版本: 目前textbox1 是vba表單中的一個姓名輸入位置 當我發現他沒輸入東西,或者為數字跟標點符號時 原設定為"新增資料"的按扭 按下之後會發現錯誤,跳出msbox,並停止vba的運作 (甚至是當輸入完成換行時,輸入不符規格,就會自動跳出警告視窗) 目前卡住不會寫 If TextBox1.Value = False Then end if 目前google"停止 vba 巨集"大神 大部份都是停止excel顯示錯誤警告視窗的巨集 求高手支援 另外問一下 我總共有 TextBox1.Value = False TextBox2.Value = False TextBox3.Value = False TextBox4.Value = False TextBox5.Value = False TextBox6.Value = False TextBox7.Value = False TextBox8.Value = False TextBox9.Value = False TextBox10.Value = False TextBox11.Value = False TextBox12.Value = False TextBox13.Value = False TextBox14.Value = False 這些需要判斷 是需要每個各做一次,還是有一次找尋的方法 但我猜可能還是得一個一個做 因為警告視窗得顯示未輸入的空白格子 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.158.244 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1474540826.A.591.html ※ 編輯: waiter337 (114.35.158.244), 09/22/2016 18:43:15 ※ 編輯: waiter337 (114.35.158.244), 09/22/2016 18:46:41 ※ 編輯: waiter337 (114.35.158.244), 09/22/2016 18:47:24

09/22 20:37, , 1F
UNLOAD userform1
09/22 20:37, 1F

09/22 21:22, , 2F
If TextBox1.Text = "" Then MsgBox ("舊車主空白")
09/22 21:22, 2F

09/22 21:22, , 3F
Exit Sub
09/22 21:22, 3F

09/22 21:22, , 4F
End If
09/22 21:22, 4F

09/22 21:37, , 5F
有時後會跳出 有END IF 卻沒有 IF
09/22 21:37, 5F

09/22 21:45, , 6F
好像是不用end if 的 if種類
09/22 21:45, 6F

09/22 21:45, , 7F
我刪掉繼續hkhk43
09/22 21:45, 7F

09/22 21:45, , 8F
繼續測
09/22 21:45, 8F

09/22 21:49, , 9F
已解決
09/22 21:49, 9F
可是我出現另一個問題 假設14個都空白沒填 他的msgbox就會跳14次= = 該怎麼做讓他只跳最前面那次警告 後面沒填的警告先不跳 而且我還可以順便exit sub 避免錯誤的資料進入database ※ 編輯: waiter337 (114.35.158.244), 09/22/2016 22:15:38

09/23 09:39, , 10F
迴圈,內判斷textbox是否為空白,如只跳最前面那次的話
09/23 09:39, 10F

09/23 09:41, , 11F
就當第1筆空白時,執行msgbox訊息,再執行回文的exit sub
09/23 09:41, 11F
https://goo.gl/zoPWzG 裡面的msgbox每項皆不同 該如何撰寫 for ii = 1 to 14 if textbox & ii & .text = "" then msgbox exit sub next -------------------------------------- If TextBox1.Text = "" Then MsgBox ("舊車主空白") If TextBox2.Text = "" Then MsgBox ("舊車牌空白") If TextBox3.Text = "" Then MsgBox ("引擎號碼空白") If TextBox4.Text = "" Then MsgBox ("電話空白") If TextBox5.Text = "" Then MsgBox ("手機空白") If TextBox6.Text = "" Then MsgBox ("身份證字號空白") If TextBox7.Text = "" Then MsgBox ("出生年月日空白") If TextBox8.Text = "" Then MsgBox ("新車主空白") If TextBox9.Text = "" Then MsgBox ("新車牌空白") If TextBox10.Text = "" Then MsgBox ("引擎號碼空白") If TextBox11.Text = "" Then MsgBox ("身份證字號空白") If TextBox12.Text = "" Then MsgBox ("出生年月日空白") If TextBox13.Text = "" Then MsgBox ("機種空白") ※ 編輯: waiter337 (114.35.158.244), 09/23/2016 15:17:33

09/23 15:18, , 12F
迴圈寫出不同的敘述 是否要在增加一個變數
09/23 15:18, 12F

09/23 15:19, , 13F
還是說用exit for
09/23 15:19, 13F

09/23 15:27, , 14F
用controls來指定到textbox的名稱
09/23 15:27, 14F

09/23 15:28, , 15F
如檔案內textbox後為連續流水號,可用"textbox" & ii的方
09/23 15:28, 15F

09/23 15:28, , 16F
09/23 15:28, 16F

09/23 15:36, , 17F
等下研究一下
09/23 15:36, 17F

09/23 15:36, , 18F
如果改用補助欄
09/23 15:36, 18F

09/23 15:37, , 19F
Msgbox("a" & ii) 然後補助欄放在其他頁面a1~a14
09/23 15:37, 19F

09/23 15:38, , 20F
Controls 目前還沒用過 我先google一下
09/23 15:38, 20F

09/23 15:43, , 21F
抱歉,補助欄是?輔助欄嗎?
09/23 15:43, 21F

09/23 15:44, , 22F
Msgbox("a" & ii) 然後補助欄放在其他頁面a1~a14是指
09/23 15:44, 22F

09/23 15:46, , 23F
msgbox引內儲存格a1~a14的值嗎?
09/23 15:46, 23F

09/23 15:47, , 24F
09/23 15:47, 24F

09/23 15:47, , 25F
如果引用儲存格的值,寫法上就不正確了
09/23 15:47, 25F

09/23 15:49, , 26F
應是range或cells來指定
09/23 15:49, 26F

09/23 17:14, , 27F
抱歉,我還是寫不出來
09/23 17:14, 27F

09/23 17:24, , 28F
controls方面嗎?如果是的話類似http://imgur.com/a/ahfAT
09/23 17:24, 28F

09/23 18:08, , 29F
太感謝了
09/23 18:08, 29F

09/23 18:08, , 30F
麻煩幫我看一下這樣寫有沒有其他問題
09/23 18:08, 30F
lable1 是表單格子前面的名稱 Private Sub CommandButton1_Click() For ii = 1 To 14 x = Controls("Label" & ii) If Controls("textbox" & ii) = "" Then MsgBox " 注意 " & x & " 空白.": Exit Sub End If Next End Sub vba跑的了 ※ 編輯: waiter337 (114.35.158.244), 09/23/2016 18:12:29

09/23 18:28, , 31F
label方面要實際是否調整流水號同textbox
09/23 18:28, 31F

09/23 18:29, , 32F
因原本提供的檔案內是無對應上的
09/23 18:29, 32F

09/23 18:30, , 33F
是的 後來我又重新調整過了表單上的排序
09/23 18:30, 33F

09/23 18:31, , 34F
Label1會對上textbox1
09/23 18:31, 34F

09/23 20:11, , 35F
另外
09/23 20:11, 35F
Private Sub CommandButton31_Click() For jj = 1 To 14 y = Controls("frame" & jj).Caption If Controls("OptionButton" & jj).Value = True Then MsgBox " 注意 " & y & " 空白.": Exit Sub End If Next End Sub 由於框架frame1 與 按扭選項OptionButton1 是沒有遞增邏輯的 我想抓取frame1的名稱 "處理種類" (或許之後我在設個列表,甚至是其他排序) 其下有3個按扭選項 利用 OptionButton1 OptionButton2 OptionButton3 來判斷是否有點選這樣 是否三個內有點選任1,或許本身frame1,有true跟false能夠判斷 是否有選擇其一了,不過也只能選一個 ※ 編輯: waiter337 (114.35.158.244), 09/23/2016 20:17:54 或者大大們有沒有什麼類似的範本 像是vba的資料輸入表,各行各業的都可以 借我參考 我自己研究看看 我先google一下 ※ 編輯: waiter337 (114.35.158.244), 09/23/2016 20:24:16

09/23 21:27, , 36F
迴圈於各frame內,判斷controls為OptionButton是否有任一
09/23 21:27, 36F

09/23 21:27, , 37F
個被選取
09/23 21:27, 37F
文章代碼(AID): #1NuxKQMH (Office)
文章代碼(AID): #1NuxKQMH (Office)