我在工作表中有数据,这些数据是在用户注册到他选择的访问类型(作为学生或教授)时生成的。我有两个用户表单(frmStudent和frmProfessor)。我的问题是,如何在用户登录时更改用户表单的标题(名称,课程/部门,性别)。
示例:当用户123登录时,frmStudent会显示工作表中列出的相应名称,课程和性别,并显示在用户表单的标签中。 (frmStudent.lblname.caption将更改为“Bogart MAgnifico”,课程和性别也会更改。)或者如果user456登录frmProfessor显示并对标签执行相同操作。
此外,在注册期间,我让他们使用两个选项按钮选择他们想要的访问类型。我尝试过使用一个循环(我用作frmLogin,检查用户名和密码是否正确),但我似乎无法使其正常工作。
显示代码可能有所帮助。 请考虑我的问题,因为我是VBA的新手。
答案 0 :(得分:0)
在我的虚拟工作簿中,我创造了这些东西:
在“Sheet1”中:第1行 - 2个用户的登录名;其他2行 - 他们的名字和姓氏。
Sub Excel_login() UserForm1.Show End Sub
该按钮用于调用UserForm1以输入登录名。如果正确,则显示UserForm2。
Private Sub CommandButton1_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") Select Case Me.TextBox1.Text Case ws.Range("A1").Value 'userABC UserForm2.Caption = ws.Range("A1").Value UserForm2.Label2.Caption = ws.Range("A2").Value UserForm2.Label3.Caption = ws.Range("A3").Value Me.Hide UserForm2.Show Case ws.Range("B1").Value 'userDEF UserForm2.Caption = ws.Range("B1").Value UserForm2.Label2.Caption = ws.Range("B2").Value UserForm2.Label3.Caption = ws.Range("B3").Value Me.Hide UserForm2.Show Case Else MsgBox "Incorrect username." Me.Hide Exit Sub End Select Set ws = Nothing End Sub
如果用户成功登录,他会看到这两个表单中的一个具有不同的label和userForm标题,具体取决于用户:
修改强>
为了不为每个新用户创建新的Case
,您只需执行此操作:
Dim i as long
For i = 1 To ws.UsedRange.Columns.Count
If ws.Cells(1, i).Value = Me.TextBox1.Text Then
UserForm2.Caption = ws.Cells(1, i).Value
UserForm2.Label2.Caption = ws.Cells(2, i).Value
UserForm2.Label3.Caption = ws.Cells(3, i).Value
Me.Hide
UserForm2.Show
Exit For
End If
Next