Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4707|回复: 22

[已解决]excel VBA高手请进!修改

[复制链接]
发表于 2011-6-5 07:14 | 显示全部楼层 |阅读模式
在excel中建立一个窗体:
用户名:文本框1
密码:文本框2
级别:文本框3
部门:文本框4
两个按钮:“进入系统”按钮1、“退出系统”按钮2
      当输入用户名:long  相应密码:2008   级别:自动选择为2级(根据用户名密码都正确来判断级别)  部门:自动选择为统计部(根据用户名密码都正确来判断部门),点击“进入系统”进入表sheet4;
注意:1.用户名密码级别部门有多组
         2.级别:生产部有1........5个等级;统计部、销售部有A......F五个等级;管理部有A......C三个等级
         3.当用户名密码和表sheet2信息完全不一致时【包括文本框1.文本框2.文本框3.文本框4任意一个为空时】,提示用户名密码错误,当次数查过三次的时,自动退出系统
部门:生产部、统计部、销售部、管理部
1、当部门是生产部时,“进入系统”表sheet3;
   当部门是统计部时,“进入系统”表sheet4;
   当部门是销售部时,“进入系统”表sheet5;
   当部门是管理部时,“进入系统”表sheet6;
2、用户名、密码、级别、部门相关信息要求在同一张表sheet2上!

下列上传的文件是没有注意3时的文档,出现的错误是:
“运行时错误,类型不匹配”指的是: If arr(x, 1) = TextBox1.Value And arr(x, 2) = TextBox2.Value * 1 Then SAP入库系统.rar (28.39 KB, 下载次数: 16)
发表于 2011-6-5 08:35 | 显示全部楼层
选择或输入用名时,自动填充部门与级别。三次密码验证:自义一个公共变量,每次按下进入累计加1.。判定达三次输错,直接退出
回复

使用道具 举报

 楼主| 发表于 2011-6-5 08:48 | 显示全部楼层
回复 mxg825 的帖子

请问有没有你编写的文档给我发过来行吗
回复

使用道具 举报

发表于 2011-6-5 13:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 mxg825 于 2011-6-5 17:14 编辑

回复 long826121 的帖子

最终效果在22楼
回复

使用道具 举报

发表于 2011-6-5 13:59 | 显示全部楼层
回复 long826121 的帖子

请重新下载吧!
增加了 禁用窗体(关闭)按键!

  1. Dim R%, C%
  2. Private Sub CommandButton1_Click() '进入验证
  3. Dim arr, x%
  4. If Len(ComboBox1.Text) = 0 Or Len(TextBox2.Text) = 0 Then
  5. MsgBox "用户名或密码不能为空", , "提示"
  6. Exit Sub
  7. End If

  8. arr = Sheets("sheet2").Range("A4:D" & R).Value
  9. For x = 1 To UBound(arr)
  10.   If arr(x, 1) = ComboBox1.Value Then '对比用户名
  11.         If TextBox2.Text = arr(x, 4) Then '对比密码
  12.          Exit For
  13.         Else
  14.           C = C + 1
  15.              If C >= 3 Then
  16.                 MsgBox "密码输错3次了,系统将退出"
  17.                 ActiveWorkbook.Close True
  18.             Else
  19.               MsgBox "您输入的用户或密码有误,第" & C & "次"
  20.              Exit Sub
  21.              End If
  22.            End If
  23.     End If
  24. Next x
  25. Unload Me '删除窗体

  26. If TextBox4.Value = "生产部" Then
  27.         Sheets("sheet3").Visible = True
  28.         Sheets("sheet3").Select
  29. ElseIf TextBox4.Value = "统计部" Then
  30.        Sheets("sheet4").Visible = True
  31.         Sheets("sheet4").Select
  32. ElseIf TextBox4.Value = "销售部" Then
  33.       Sheets("sheet5").Visible = True
  34.       Sheets("sheet5").Select
  35. ElseIf TextBox4.Value = "管理部" Then
  36.       Sheets("sheet6").Visible = True
  37.        Sheets("sheet6").Select
  38. End If

  39. End Sub

  40. Private Sub CommandButton2_Click() '退出 关闭
  41.      ActiveWorkbook.Close True
  42. End Sub

  43. Private Sub ComboBox1_Click()
  44. TextBox3.Text = ComboBox1.List(ComboBox1.ListIndex, 1) '取列表第2列内容(级别)
  45. TextBox4.Text = ComboBox1.List(ComboBox1.ListIndex, 2) '取列表第3列内容(部分)
  46. End Sub


  47. Private Sub UserForm_Initialize() '窗体 初始化
  48. Dim SH%
  49. For SH = 2 To Sheets.Count
  50. Sheets(SH).Visible = False '隐藏工作表
  51. Next SH
  52. R = Sheet2.Range("A65536").End(xlUp).Row
  53. ComboBox1.RowSource = "Sheet2!$A$4:$C$" & R '导入数据
  54. ComboBox1.Style = fmStyleDropDownList '只能选取列表内容
  55. TextBox3.Locked = True '不可修改
  56. TextBox4.Locked = True
  57. End Sub

  58. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  59. If CloseMode = 0 Then Cancel = 1 '禁用 用户在 UserForm.上选择“控制”菜单中的“关闭”命令
  60. End Sub
复制代码

SAP入库系统.rar

32.72 KB, 下载次数: 19

回复

使用道具 举报

 楼主| 发表于 2011-6-5 14:01 | 显示全部楼层
回复 mxg825 的帖子

采纳了你的答案!

回复

使用道具 举报

 楼主| 发表于 2011-6-5 14:25 | 显示全部楼层
回复 mxg825 的帖子

你好!你可以把用户名后面的列表框换成文本框吗?


回复

使用道具 举报

发表于 2011-6-5 14:32 | 显示全部楼层
为什么要这么做!这样不是很好吗?
回复

使用道具 举报

 楼主| 发表于 2011-6-5 14:37 | 显示全部楼层
回复 mxg825 的帖子

没有评价好不好的问题,只是觉得:列表框找用户名的时候太难找了,还不如自己输入的快,所以就用文本框的!呵呵!

回复

使用道具 举报

发表于 2011-6-5 14:47 | 显示全部楼层
好吧!我帮你改一下! 请稍等
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 10:35 , Processed in 0.180054 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表