☆本期內(nèi)容概要☆
前兩天我們分享了一個(gè)完整的EXCEL小應(yīng)用【中醫(yī)診所收費(fèi)系統(tǒng):【重磅】Excel VBA 應(yīng)用分享/中醫(yī)診所收費(fèi)系統(tǒng)/Excel+ListBox版】,打開文件就是一個(gè)用戶登錄界面,今天我們就一起來動(dòng)手重新做一個(gè)這樣的登錄界面,用戶名+密碼登錄EXCEL,具體代碼可能與中醫(yī)診所收費(fèi)系統(tǒng)中的不一樣,我們不去管它,條條大路通羅馬。 設(shè)計(jì)思路與過程分步演示: 1、新建一個(gè)excel文件,另存為啟用宏的工作簿,名稱隨意,我這里命名為:窗體登錄(用戶名+密碼).xlsm 2、在excel文件中,把sheet1重命名為“Main”,作為主界面使用,在其上插入一個(gè)命令按鈕CmdLogin,Caption改為“重新登錄”。這個(gè)主界面今后可以作為進(jìn)入其他窗體、表頁的入口。目前就放一個(gè)重新登錄的按鈕。 3、插入一張工作表,重命名為“tb用戶”,輸入用戶信息: 這張表存有重要信息,我們最后會(huì)把它深度隱藏,在工作表界面是看不到它的。要是能看到,密碼豈不是形同虛設(shè)? 4、打開VBE,即Visual Basic編輯器,插入用戶窗體: 5、把窗體名稱修改為Usf_Login,Caption修改為“用戶登錄”: 6、打開工具箱,在窗體上添加控件: (1)標(biāo)簽:LbTitle,Caption系統(tǒng)登錄;Label1,Caption“用戶ID:”;Label2,Caption“密 碼:”,字體大小位置適當(dāng)調(diào)整,背景調(diào)成透明。 其他控件屬性調(diào)整如法炮制,不再贅述。如果沒有看到屬性窗口,可以右擊任意控件,在彈出的菜單中點(diǎn)“屬性”,然后點(diǎn)擊相應(yīng)控件則切換到該控件的“屬性”。 (2)文本框:TxbUserID,TxtPassWord,用來輸入信息。在TxtPassWord的屬性中,設(shè)置密碼掩碼(PasswordChar)為*。 (3)命令按鈕:CmdLogin,Caption“登錄”,CmdExit,Caption“退出”。 7、編寫代碼: (1)雙擊用戶窗體,點(diǎn)選右側(cè)方法與事件,選擇Activate或者Initialize,輸入代碼:
代碼簡析:定義模塊級(jí)變量,以便在本窗體其他過程中引用它們的值。窗體啟動(dòng),讀取用戶信息表到數(shù)組arr(),用于后續(xù)登錄時(shí)的信息比對。Activate與Initialize在窗體啟動(dòng)時(shí),都會(huì)運(yùn)行其中的代碼,區(qū)別是Activate方法下,窗體重新激活就會(huì)再次運(yùn)行代碼,Initialize只在窗體啟動(dòng)時(shí)運(yùn)行,再次激活時(shí)不會(huì)運(yùn)行。 (2)雙擊登錄按鈕,輸入代碼:
代碼簡析:代碼塊亦有注釋。 CmdLogin的Click事件,把用戶輸入的用戶ID與密碼跟arr()中的數(shù)據(jù)進(jìn)行比對, 如果找到用戶ID,則比較密碼,如果密碼相符,則登錄成功,退出窗體,如果密碼不符,則不能登錄,清空已輸入的密碼,并把焦點(diǎn)放到TxtPassWord,以便再次輸入; 如果沒有找到用戶ID則提示用戶重新輸入用戶ID。 這里有個(gè)公共變量LoginStatus,如果用戶正常登錄,其值為1,在后面退出窗體的代碼中會(huì)用到。 公共變量currUserID,currUserName存下當(dāng)前用戶的信息,供后續(xù)過程使用,比如憑證制單中的制單人,憑證審核中的審核人等需要用到當(dāng)前用戶名稱的地方。 關(guān)于用戶ID與密碼校驗(yàn),還有其他方法: (a)Vlookup工作表函數(shù):查找用戶ID對應(yīng)的密碼值,與TxbPassWord的值進(jìn)行比較,再進(jìn)行相應(yīng)處理。 (b)SQL語句:查詢“tb用戶”表中,用戶ID=TxbUserID的密碼。這種方法要建立數(shù)據(jù)連接,我們前面分享過【Excel VBA 憑證打印/SQL連接Eexcel文件/Listview控件/CommandButton命令按鈕控件】這里不再重復(fù),有興趣的朋友可以自行測試研究。這種方法還可以用于數(shù)據(jù)存儲(chǔ)在Access數(shù)據(jù)庫的情況,我們后續(xù)可能會(huì)遇到,界時(shí)再詳細(xì)闡述。 (3)繼續(xù)輸入窗體退出代碼:
代碼簡析:窗體退出,包括用戶點(diǎn)擊窗體右上角的X按鈕。主要是防止用戶在沒有正確輸入用戶ID、密碼的情況下,點(diǎn)擊窗體右上角的X按鈕退出窗體,從而直接進(jìn)入EXCEL工作簿。 如果用戶正常登錄,此時(shí)LoginStatus的值應(yīng)為1,如果為0,則表明用戶非正常進(jìn)入,我們就退出EXCEL文件。 (4)CmdExit(退出)按鈕點(diǎn)擊事件:
(5)ThisworkBook 后來又修改了代碼,圖就不改了。
代碼簡析: 工作簿打開時(shí),激活UsF_Login窗體,等待用戶輸入用戶ID與密碼進(jìn)入。 工作簿關(guān)閉時(shí),先把"tb用戶"表深度隱藏,再保存工作簿,如果僅有本工作簿處于打開狀態(tài),則關(guān)閉EXCEL程序,否則僅關(guān)閉本工作簿,保持其他工作簿不被關(guān)閉。 (6)插入用戶模塊(如果已有則不用插入),名稱應(yīng)該是“模塊1”,可改可不改,這里我改為“MyModule”,以示區(qū)別。設(shè)置Public變量:
用戶登錄成功后,LoginStatus的值為1,在用戶窗體退出代碼中用到此變量,如果為1,則窗體退出時(shí)僅僅是退出窗體,EXCEL文件正常打開,包括后續(xù)點(diǎn)擊重新登錄時(shí),再點(diǎn)擊“退出”按鈕,程序不會(huì)退出。如果為0,則表明用戶沒有正常登錄,我們直接退出EXCEL。 (7)“Main”工作表中CmdLogin(重新登錄)命令按鈕:
8、給VBA工程添加密碼,保護(hù)工程。防止別人進(jìn)入VBE編輯器查看到密碼。保護(hù)密碼這里設(shè)為0,各位可自行設(shè)置。 另外,該EXCEL文檔,在關(guān)閉時(shí),會(huì)自動(dòng)保存數(shù)據(jù)。 |
|