VBA如何控制表單輸入防止錯誤 - 會計
By Yedda
at 2017-01-12T01:56
at 2017-01-12T01:56
Table of Contents
VBA如何控制表單輸入防止錯誤
網誌圖文版:
http://www.b88104069.com/archives/4152
所謂內部控制,是在制度設計中防堵可能的錯誤發生,主要方式之一,是阻
止該項操作或者交易繼續進行下去。在ERP系統中,使用者在輸入表單時,
常常會遇到沒辦法輸入成功(無法確認)的情況,這是系統內置的控制制度
。上一節介紹了如何以VBA表單輸入控制測試資料,既然是表單,也可以仿
照ERP系統設計防呆,以下具體分享:
一、在VBA編輯器裡,設計表單如同繪圖板一般簡單直覺,例如要刪除某個
按文字框物件,只要滑鼠右鍵,「刪除」即可。
二、改為比較合適的「下拉式方塊」,於「屬性」視窗切換到「性質分類」
頁籤。這裡除了將「(Name)」改為「單價」,還將「MatchRequired」設
定為「True」,表示只能輸入預先定義的選項。
三、比照上一步驟,將「核准」也改為下拉式,另外再添一個命令按扭:「
結束」。
四、輸入如圖所示的程式碼,可以直接寫程式,也可以先在上面的下拉選項
,左邊選好按紐,右邊選好事件,VBA會自動跳出該按紐事件的Sub供書寫代
碼,可以試看看不同的按紐事件,反正不行再將程式刪掉即可。關於程式代
碼,下面再作說明。
五、後台VBA編輯好了,回到前台Excel,執行巨集,在表單視窗中,單價方
塊輸入「2.5」,按「確定」後會出現錯誤提示:「無效的屬性值」。
六、即使兩個下拉選單都填好了,中間有一欄「客戶」是空白,一樣會跳出
錯誤提示:「請全部都輸入!」。
七、以下說明程式碼:
Private Sub UserForm_Initialize()
單價.List = Array("一致", "不一致"): 核准.List = Array("經簽核", "
未簽核")
End Sub
註1:建立此表單的初始值,分別賦予「單價」和「核准」的下拉內容,中
間「:」是將兩行程式串連在一行,方便檢閱。
Private Sub 確定_Click()
If 日期.Value = "" Or 訂單.Value = "" Or 客戶.Value = "" Or 單價
.Value = "" _
Or 核准.Value = "" Then
MsgBox "請全部都輸入!", vbExclamation, "錯誤提示"
Exit Sub: End If
註2:以一個If判斷式控制輸入,如果有任何一個欄位沒有填寫,則錯誤提
示:「請全部都輸入!」,跳出「Private Sub 確定_Click()」這個程序。
Dim r As Integer
r = Range("G9").CurrentRegion.Rows.Count + 8
Cells(r, "G") = 日期.Value: Cells(r, "H") = 訂單.Value: Cells(r,
"I") = 客戶.Value
Cells(r, "J") = 單價.Value: Cells(r, "K") = 核准.Value
日期.Value = "": 訂單.Value = "": 客戶.Value = ""
單價.Value = "": 核准.Value = ""
End Sub
註3:定義「r」為整數變量,「r =
Range("G9").CurrentRegion.Rows.Count + 8」將所要輸入的列數賦給「r
」,其中「Range("G9").CurrentRegion.Rows.Count」意思是「R9」所在非
空白資料表格的列數,也就是下圖中被黃色包圍的表格,共有4列,注意到
顏色填滿和儲存格框線,並不影響內容是空白的判斷,另外資料是從第八列
開始的,所以要再加個8,結果便是將資料輸入在第12列,正是我們想要的
。這裡特別設計了圖案說明,讀者應能理解。
Private Sub 結束_Click()
Unload 銷貨收入控制測試
End Sub
註4:設定命令按紐「結束」的執行程序,也就是退出目前的輸入表單。
以上,是關於這篇文章範例的程式碼說明。和Excel的函數參數一樣,VBA有
很嚴謹的語法結構,一定要照規距來,不然Excel無法讀懂和程式,也就無
法執行。不過以這篇文章來說,有事先定義好的物件(「下拉式方塊」)、
有關於此物件的屬性編輯表(「MatchRequired」)、有如同繪圖板般的指
令製作(表單)、可以分開獨立編寫的事件(Sub),凡此種種,都讓VBA更
加容易親近學習,不是很難,但卻是很神奇,有興趣讀者因應需要,建議嘗
試照樣造句,編寫自己的VBA程式。
延伸閱讀:
VBA如何輸入控制測試資料
http://www.b88104069.com/archives/4150
VBA如何另存檔案備份
http://www.b88104069.com/archives/4149
VBA如何定期自動儲存檔案
http://www.b88104069.com/archives/4148
--
周末,我們繼續Excel:精華區=>21.心得=>5.其他=>3.office
會計人的Excel小教室: https://www.facebook.com/acctexcel
--
網誌圖文版:
http://www.b88104069.com/archives/4152
所謂內部控制,是在制度設計中防堵可能的錯誤發生,主要方式之一,是阻
止該項操作或者交易繼續進行下去。在ERP系統中,使用者在輸入表單時,
常常會遇到沒辦法輸入成功(無法確認)的情況,這是系統內置的控制制度
。上一節介紹了如何以VBA表單輸入控制測試資料,既然是表單,也可以仿
照ERP系統設計防呆,以下具體分享:
一、在VBA編輯器裡,設計表單如同繪圖板一般簡單直覺,例如要刪除某個
按文字框物件,只要滑鼠右鍵,「刪除」即可。
二、改為比較合適的「下拉式方塊」,於「屬性」視窗切換到「性質分類」
頁籤。這裡除了將「(Name)」改為「單價」,還將「MatchRequired」設
定為「True」,表示只能輸入預先定義的選項。
三、比照上一步驟,將「核准」也改為下拉式,另外再添一個命令按扭:「
結束」。
四、輸入如圖所示的程式碼,可以直接寫程式,也可以先在上面的下拉選項
,左邊選好按紐,右邊選好事件,VBA會自動跳出該按紐事件的Sub供書寫代
碼,可以試看看不同的按紐事件,反正不行再將程式刪掉即可。關於程式代
碼,下面再作說明。
五、後台VBA編輯好了,回到前台Excel,執行巨集,在表單視窗中,單價方
塊輸入「2.5」,按「確定」後會出現錯誤提示:「無效的屬性值」。
六、即使兩個下拉選單都填好了,中間有一欄「客戶」是空白,一樣會跳出
錯誤提示:「請全部都輸入!」。
七、以下說明程式碼:
Private Sub UserForm_Initialize()
單價.List = Array("一致", "不一致"): 核准.List = Array("經簽核", "
未簽核")
End Sub
註1:建立此表單的初始值,分別賦予「單價」和「核准」的下拉內容,中
間「:」是將兩行程式串連在一行,方便檢閱。
Private Sub 確定_Click()
If 日期.Value = "" Or 訂單.Value = "" Or 客戶.Value = "" Or 單價
.Value = "" _
Or 核准.Value = "" Then
MsgBox "請全部都輸入!", vbExclamation, "錯誤提示"
Exit Sub: End If
註2:以一個If判斷式控制輸入,如果有任何一個欄位沒有填寫,則錯誤提
示:「請全部都輸入!」,跳出「Private Sub 確定_Click()」這個程序。
Dim r As Integer
r = Range("G9").CurrentRegion.Rows.Count + 8
Cells(r, "G") = 日期.Value: Cells(r, "H") = 訂單.Value: Cells(r,
"I") = 客戶.Value
Cells(r, "J") = 單價.Value: Cells(r, "K") = 核准.Value
日期.Value = "": 訂單.Value = "": 客戶.Value = ""
單價.Value = "": 核准.Value = ""
End Sub
註3:定義「r」為整數變量,「r =
Range("G9").CurrentRegion.Rows.Count + 8」將所要輸入的列數賦給「r
」,其中「Range("G9").CurrentRegion.Rows.Count」意思是「R9」所在非
空白資料表格的列數,也就是下圖中被黃色包圍的表格,共有4列,注意到
顏色填滿和儲存格框線,並不影響內容是空白的判斷,另外資料是從第八列
開始的,所以要再加個8,結果便是將資料輸入在第12列,正是我們想要的
。這裡特別設計了圖案說明,讀者應能理解。
Private Sub 結束_Click()
Unload 銷貨收入控制測試
End Sub
註4:設定命令按紐「結束」的執行程序,也就是退出目前的輸入表單。
以上,是關於這篇文章範例的程式碼說明。和Excel的函數參數一樣,VBA有
很嚴謹的語法結構,一定要照規距來,不然Excel無法讀懂和程式,也就無
法執行。不過以這篇文章來說,有事先定義好的物件(「下拉式方塊」)、
有關於此物件的屬性編輯表(「MatchRequired」)、有如同繪圖板般的指
令製作(表單)、可以分開獨立編寫的事件(Sub),凡此種種,都讓VBA更
加容易親近學習,不是很難,但卻是很神奇,有興趣讀者因應需要,建議嘗
試照樣造句,編寫自己的VBA程式。
延伸閱讀:
VBA如何輸入控制測試資料
http://www.b88104069.com/archives/4150
VBA如何另存檔案備份
http://www.b88104069.com/archives/4149
VBA如何定期自動儲存檔案
http://www.b88104069.com/archives/4148
--
周末,我們繼續Excel:精華區=>21.心得=>5.其他=>3.office
會計人的Excel小教室: https://www.facebook.com/acctexcel
--
Tags:
會計
All Comments
Related Posts
acl的換國際證照課程 值得上?
By Belly
at 2017-01-11T20:35
at 2017-01-11T20:35
張仲岳 中級會計學 二版上下冊
By Elvira
at 2017-01-11T13:45
at 2017-01-11T13:45
執行業務所得扣繳問題
By Puput
at 2017-01-10T22:17
at 2017-01-10T22:17
公司會計
By Joseph
at 2017-01-10T21:22
at 2017-01-10T21:22
2017年會計師考試與2016年差異?
By Eden
at 2017-01-10T11:21
at 2017-01-10T11:21