|
你这个问题可大了,你textbox和combobox不分。逻辑混乱。变量用错。大致上帮你修改了一下,避免了开始的错误,但是不知道满足你的意思否。。。。
- Private Sub CommandButton1_Click()
- 'On Error GoTo 10 '当姓名与密码不对应时,会出现错误,转到10语句处理
- Dim n As String
- Dim s As Double
- Dim rng As Range
- Set sh = Sheets("设置")
- na = TextBox1.Text: ps = ComboBox1.Text '取得登录窗口中的姓名与密码
- If na = "" Or ps = "" Then MsgBox "未输入用户名或密码,不能登录", , "提示": Exit Sub
- Set rng = sh.[a:a].Find(ps)
- s = Val(Right(rng.Address, 1))
- 's = WorksheetFunction.Match(na, sh.[a:a], 0) '查找用户在A列的位置
- n = sh.Cells(s, 2) '取出“设置”表中的权限密码,字符型
- If n <> na Then GoTo 10
- Call 隐藏表
- '检查一下“设置”表的C列及右边各格中的内容,有内容的,说明可以打开内容所指定的工作表
- For i = 4 To 255
- b = sh.Cells(s, i).Value
- If b = 1 And sh.Cells(1, i) <> "" Then '单元格为1时,表示有权限打开这个表,就让它显示出来
- Sheets(sh.Cells(1, i).Value).Visible = -1
- End If
- Next
- Unload UserForm1 '退出窗体
- Exit Sub
- 10:
- MsgBox "姓名或密码错误,不能登录", , "提示"
- End Sub
- Sub 隐藏表()
- TextBox1.Text = "": ComboBox1.Text = ""
- For i = 1 To Worksheets.Count
- If Sheets(i).Name <> "登录" Then
- Sheets(i).Visible = 2
- Else
- Sheets(i).Visible = -1 '只让“登录”表显示出来
- End If
- Next
- End Sub
- Private Sub CommandButton2_Click()
- Call 隐藏表
- End Sub
- Private Sub UserForm_Activate()
- '窗体出现在屏幕上的位置
- Me.Top = 220
- Me.Left = 120
- End Sub
复制代码 还有代码书写的极不规范。
|
|