ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 32324|回复: 86

[已解决] 用户登陆界面(有密码)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2016-2-1 16:19 | 显示全部楼层 |阅读模式
大家好。 VB.rar (22.41 KB, 下载次数: 394)

我想做一个登陆界面。界面要输入用户。密码才能进到不同的SHEET中。

想达到的目的。SHEET和用户可以被管理员添加。另外如果在后面输入“Y”.VBA将会为用户自动开放对应的SHEET。

问题:请问,这个能用FOR 语句实现吗?

下面这个我试过。如果For 在IF 里。IF 后的表达式怎么写?FOR 在IF 外。就会报错。(这段代码的目的就是要 在对应处填写“Y”, VBA 会为用户用动开放对应的SHEET)

For i = 4 To R1
If account_text = Sheet1.Cells(i, 1) And Password_.Text = Sheet1.Cells(i, 2) Then
        y_ = Sheet1.Range(Cells(i, 5), Cells(i, c1)).Find("y", , , 1)
        g = Cells(1, y_.Column).Value
        
        If Not y_ Is Nothing Then
   
        Sheets(g).Visible = ture
   
        Else
        End If

Next


请高手帮忙解下。。。多谢了!越详细越好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-2 10:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没有人帮我吗?。。。用户名: Ray 密码: Ray

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-2 10:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-2-2 11:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ThisWorkbook
  1. Private Sub Workbook_Open()
  2. Application.Visible = False
  3. For i = 1 To Sheets.Count - 1
  4.     Sheets(i).Visible = 2
  5. Next
  6. MyWelcomeLogo.Show
  7. End Sub
复制代码

MyWelcomeLogo 窗体代码
  1. Private Sub Enter_Click()

  2. R1 = Sheet1.UsedRange.Rows.Count
  3. c1 = Sheet1.UsedRange.Columns.Count

  4. With Worksheets(1)
  5.     For i = 1 To R1
  6.    ' MsgBox .Cells(i, 1) & "**" & .Cells(i, 2)
  7.         If Account_.Text = .Cells(i, 1) And Password_.Text = .Cells(i, 2) Then
  8.             
  9.             Set c = .Range(.Cells(i, 5), .Cells(i, c1)).Find("y", , , 1)
  10.             If Not c Is Nothing Then
  11.                 firstAddress = c.Address
  12.                 Do
  13.                     Worksheets(c.Column - 4).Visible = -1
  14.                     Set c = .Range(.Cells(i, 5), .Cells(i, c1)).FindNext(c)
  15.                 Loop While Not c Is Nothing And c.Address <> firstAddress
  16.              End If
  17.              Application.Visible = True
  18.              Unload MyWelcomeLogo
  19.              Exit Sub
  20.         End If
  21.     Next
  22. End With

  23. MsgBox "user name or password error, access denied."
  24. Password_.Text = ""
  25. Password_.SetFocus

  26. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-2-2 11:24 | 显示全部楼层
改动比较大
另外,需要注意的是至少有一个sheet页不能隐藏。

VB.zip

25.89 KB, 下载次数: 1069

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-2 14:03 | 显示全部楼层
hsw212 发表于 2016-2-2 11:23
ThisWorkbook

MyWelcomeLogo 窗体代码

我去!高手!好强大!

我大概明白您的意思。但正在琢磨!

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-3 10:36 | 显示全部楼层
hsw212 发表于 2016-2-2 11:24
改动比较大
另外,需要注意的是至少有一个sheet页不能隐藏。

心若,

请教一手再。FOR NEXT, 和 DO WHILE的区别。我知道它有区别。但从网上案例来看。他们可以用来做检查。
如:A B C。 如果想在Cells(x,1)非空的请况下,判断 cells(x,2)和cells(x,3)是否为空。就好像发邮件,没有主题或内容给出提示那样。请问,用for next 合适还是do while合适?

谢谢

TA的精华主题

TA的得分主题

发表于 2016-2-3 10:47 | 显示全部楼层
本帖最后由 hsw212 于 2016-2-3 10:49 编辑

都可以的。用什么看个人习惯而定了do ... loop有四种形式。
就你说的这种情况,可以这样写
i=1
do while cell(x,i).value<>"" or i>3
i=i+1
loop
-----------
for i=1 to 3
  if cells(x,i).value=""  then exit for
next i


网上这种教程很多,你可以搜下仔细读读

TA的精华主题

TA的得分主题

发表于 2016-2-3 11:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
前几天刚帮一个论坛的修改的登录窗口,给你

登录窗口.rar

94.89 KB, 下载次数: 3880

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-2-3 21:27 | 显示全部楼层
wj2368 发表于 2016-2-3 11:04
前几天刚帮一个论坛的修改的登录窗口,给你

好高大尚。刚到家。明儿再开始研究!谢了高手儿!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-14 20:10 , Processed in 0.042179 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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