免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Excel VBA 用戶窗體設置/一步一步代你設計EXCEL用戶+密碼登錄界面

☆本期內容概要☆

  • 用戶窗體設置、用戶ID+密碼登錄

  • 設計思路、代碼分步演示

前兩天我們分享了一個完整的EXCEL小應用【中醫(yī)診所收費系統(tǒng):【重磅】Excel VBA 應用分享/中醫(yī)診所收費系統(tǒng)/Excel+ListBox版】,打開文件就是一個用戶登錄界面,今天我們就一起來動手重新做一個這樣的登錄界面,用戶名+密碼登錄EXCEL,具體代碼與中醫(yī)診所收費系統(tǒng)中的不一樣,我們不去管它,條條大路通羅馬。

設計思路與過程分步演示:

1、新建一個excel文件,另存為啟用宏的工作簿,名稱隨意,我這里命名為:窗體登錄(用戶名+密碼).xlsm

2、在excel文件中,把sheet1重命名為“Main”,作為主界面使用,在其上插入一個命令按鈕CmdLogin,Caption改為“重新登錄”。這個主界面今后可以作為進入其他窗體、表頁的入口。目前就放一個重新登錄的按鈕。

3、插入一張工作表,重命名為“tb用戶”,輸入用戶信息:

這張表存有重要信息,我們最后會把它深度隱藏,在工作表界面是看不到它的。要是能看到,密碼豈不是形同虛設?

4、打開VBE,即Visual Basic編輯器,插入用戶窗體:

5、把窗體名稱修改為Usf_Login,Caption修改為“用戶登錄”:

6、打開工具箱,在窗體上添加控件:

(1)標簽:LbTitle,Caption系統(tǒng)登錄;Label1,Caption“用戶ID:”;Label2,Caption“密  碼:”,字體大小位置適當調整,背景調成透明。

其他控件屬性調整如法炮制,不再贅述。如果沒有看到屬性窗口,可以右擊任意控件,在彈出的菜單中點“屬性”,然后點擊相應控件則切換到該控件的“屬性”。

2)文本TxbUserID,TxtPassWord,用來輸入信息。在TxtPassWord的屬性中,設置密碼掩碼(PasswordChar)為*。

(3)命令按鈕:CmdLogin,Caption“登錄”,CmdExit,Caption“退出”。

7、編寫代碼:

(1)雙擊用戶窗體,點選右側方法與事件,選擇Activate或者Initialize,輸入代碼:

Dim arr()Dim iRow As Integer, iCol As IntegerDim PsW As String
Private Sub UserForm_Activate() ThisWorkbook.Activate Sheets("tb用戶").Activate With Sheets("tb用戶") iRow = .UsedRange.Rows.Count iCol = .UsedRange.Columns.Count arr = .Range(Cells(1, 1), Cells(iRow, iCol)).Value End With 'StopEnd Sub
如果用Initialize方法,過程名稱就改成:Private Sub UserForm_Initialize()

代碼簡析:定義模塊級變量,以便在本窗體其他過程中引用它們的值。窗體啟動,讀取用戶信息表到數(shù)組arr(),用于后續(xù)登錄時的信息比對。Activate與Initialize在窗體啟動時,都會運行其中的代碼,區(qū)別是Activate方法下,窗體重新激活就會再次運行代碼,Initialize只在窗體啟動時運行,再次激活時不會運行。

(2)雙擊登錄按鈕,輸入代碼:

Private Sub CmdLogin_Click()    '點擊“登錄”按鈕    '判斷一下有沒有輸入用戶ID,    '如果為空,提示信息,然后退出    If Me.TxbUserID = "" Then        MsgBox "請輸入用戶ID!"        Exit Sub    End If        '根據(jù)輸入的用戶ID,在用戶信息(arr())中查找有沒有此用戶ID    '如果循環(huán)結束,仍然沒有找到    '則表明沒有此用戶,通過變量k來判斷,如果找到,使之為1    '如果找到匹配的用戶ID,再比較用戶輸入的密碼與arr()中的密碼是否一致    '如果一致,退出窗體,結束循環(huán)(Exit For),也可以直接結束過程(Exit sub)    For i = 1 To iRow        If arr(i, 2) = Me.TxbUserID Then            k = 1            If CStr(arr(i, 4)) = Me.TxtPassWord Then                Sheets("Main").Activate                Sheets("tb用戶").Visible = 2    '深度隱藏                currUserID = arr(i, 2)                currUserName = arr(i, 3)                '把登錄用戶信息記到Sheets("Main")                Sheets("Main").Range("A1") = "用戶ID:"                Sheets("Main").Range("A2") = "用戶姓名:"                Sheets("Main").Range("B1") = currUserID                Sheets("Main").Range("B2") = currUserName                LoginStatus = 1                Unload Me                Exit For            Else                MsgBox "密碼不正確,請重新輸入!"                Me.TxtPassWord = ""                Me.TxtPassWord.SetFocus            End If        End If    Next    If k = 0 Then        MsgBox "不存在此用戶,請重新輸入!"    End IfEnd Sub

代碼簡析:代碼塊亦有注釋。

CmdLogin的Click事件,把用戶輸入的用戶ID與密碼跟arr()中的數(shù)據(jù)進行比對,

如果找到用戶ID,則比較密碼,如果密碼相符,則登錄成功,退出窗體,如果密碼不符,則不能登錄,清空已輸入的密碼,并把焦點放到TxtPassWord,以便再次輸入;

如果沒有找到用戶ID則提示用戶重新輸入用戶ID。

這里有個公共變量LoginStatus,如果用戶正常登錄,其值為1,在后面退出窗體的代碼中會用到。

公共變量currUserID,currUserName存下當前用戶的信息,供后續(xù)過程使用,比如憑證制單中的制單人,憑證審核中的審核人等需要用到當前用戶名稱的地方。

關于用戶ID與密碼校驗,還有其他方法:

(a)Vlookup工作表函數(shù):查找用戶ID對應的密碼值,與TxbPassWord的值進行比較,再進行相應處理。

(b)SQL語句:查詢“tb用戶”表中,用戶ID=TxbUserID的密碼。這種方法要建立數(shù)據(jù)連接,我們前面分享過【Excel VBA 憑證打印/SQL連接Eexcel文件/Listview控件/CommandButton命令按鈕控件】這里不再重復,有興趣的朋友可以自行測試研究。這種方法還可以用于數(shù)據(jù)存儲在Access數(shù)據(jù)庫的情況,我們后續(xù)可能會遇到,界時再詳細闡述。

(3)繼續(xù)輸入窗體退出代碼:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)    If LoginStatus = 0 Then    ThisWorkbook.Save        If Workbooks.Count > 1 Then            ThisWorkbook.Close savechanges:=False        Else            Application.Quit        End If    End IfEnd Sub

代碼簡析:窗體退出,包括用戶點擊窗體右上角的X按鈕。主要是防止用戶在沒有正確輸入用戶ID、密碼的情況下,點擊窗體右上角的X按鈕退出窗體,從而直接進入EXCEL工作簿。

如果用戶正常登錄,此時LoginStatus的值應為1,如果為0,則表明用戶非正常進入,我們就退出EXCEL文件。

(4)CmdExit(退出)按鈕點擊事件:

Private Sub CmdExit_Click()    Unload MeEnd Sub

(5)ThisworkBook

后來又修改了代碼,圖就不改了。

Private Sub Workbook_BeforeClose(Cancel As Boolean)    ThisWorkbook.Activate    Sheets("tb用戶").Visible = 2    Sheets("Main").Range("A1:B2").ClearContents    ThisWorkbook.Save    If Workbooks.Count > 1 Then        ThisWorkbook.Close savechanges:=False    Else        Application.Quit    End IfEnd Sub
Private Sub Workbook_Open() UsF_Login.ShowEnd Sub

代碼簡析

工作簿打開時,激活UsF_Login窗體,等待用戶輸入用戶ID與密碼進入。

工作簿關閉時,先把"tb用戶"表深度隱藏,再保存工作簿,如果僅有本工作簿處于打開狀態(tài),則關閉EXCEL程序,否則僅關閉本工作簿,保持其他工作簿不被關閉。

(6)插入用戶模塊(如果已有則不用插入),名稱應該是“模塊1”,可改可不改,這里我改為“MyModule”,以示區(qū)別。設置Public變量:

Public LoginStatus As IntegerPublic currUserID As StringPublic currUserName As String

用戶登錄成功后,LoginStatus的值為1,在用戶窗體退出代碼中用到此變量,如果為1,則窗體退出時僅僅是退出窗體,EXCEL文件正常打開,包括后續(xù)點擊重新登錄時,再點擊“退出”按鈕,程序不會退出。如果為0,則表明用戶沒有正常登錄,我們直接退出EXCEL。

(7)“Main”工作表中CmdLogin(重新登錄)命令按鈕:

Private Sub CmdLogin_Click()    UsF_Login.ShowEnd Sub

8、給VBA工程添加密碼,保護工程。防止別人進入VBE編輯器查看到密碼。保護密碼這里設為0,各位可自行設置。

9、如果要查看、修改“tb用戶”表信息,暫時可以在VBE窗口把它的visible屬性改為-1,也可以使用代碼顯示它,甚至(也應該)通過窗體來增加、修改、刪除用戶信息,由于時間關系,就不再寫代碼了,以后再完善。
基本差不多了,我們來看一下成品:

另外,該EXCEL文檔,在關閉時,會自動保存數(shù)據(jù)。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Excel VBA 5.26 新番 最強制霸道的數(shù)據(jù)保護 打開Excel都需要輸入密碼
VBA實戰(zhàn)技巧:正確登錄后才能使用Excel工作簿
EXCEL登錄系統(tǒng)
完全手冊Excel VBA典型實例大全:通過368個例子掌握
EXCEL VBA登錄窗體設計
Excel 窗體使用--- 制作動態(tài)密碼登入
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服