+ -
当前位置:首页 → 问答吧 → [原创] [分享] 在VBA中设置了密码保护,但在EXCEL中失效的问题,标题要长长长长长

[原创] [分享] 在VBA中设置了密码保护,但在EXCEL中失效的问题,标题要长长长长长

时间:2011-08-03

来源:互联网

各位高手达人,

本人菜鸟一枚,写了一段背单词的简陋程序,功能如下:
点击按钮后,在输入框中依次输入第一列的内容,如果正确则进入下一个单元格,错误则提示要求重新输入。
到末尾可以自行添加新单词

后来发现选中单元格可以替代手工输入,于是设密码保护单元格,禁止选中。

问题是:在VBA中设置了密码保护,但在excle中解除保护不需要密码。


百思不得其解,只好上网求助。

源码如下:

Sub dInput()
    Dim dInput As String   '定义dInput 为 一个 文本输入变量
    Dim r As Integer
    Dim A As Integer
   
    A = 1
    r = Sheet1.Range("A65536").End(xlUp).Row  '得到非空最后一行的行数
   
    ActiveSheet.Protect (qwerty)  '保护单元格,防止点击代替输入,必须手动输入,括号内是解除保护的密码
   
   
    For A = 1 To r  '从第一行开始,遍历所有非空行
            
            dInput = Application.InputBox(Prompt:=Sheet1.Cells(A, 1), Type:=2)   '用inputbox函数,将输入的值赋予dInput变量,其中,prompt为参数,表示取第A行,第一列的单元格内容作为提示信息
            
            If dInput = Sheet1.Cells(A, 1) Then  '判断,如果输入信息与提示信息相符,则结束if,到next A, 即是返回到for语句,进行循环
   
            ElseIf dInput = "quit" Then   '中途允许退出
            
            GoTo x
            
             Else
              MsgBox "wrong,repeat"  '如何不符,则A-1,然后循环,即是重新要求输入一遍该单元格
              A = A - 1
              
            End If
            
    Next A
           ActiveSheet.Unprotect  '解除保护单元格,防止点击代替输入,必须手动输入,括号内是解除保护的密码
           dInput = Application.InputBox(Prompt:="输入新值", Type:=2)  '如果循环完毕,表述现有的数据都已输入一遍,需要输入新数据,因此提示输入新值。 重新赋值给dInput
           Sheet1.Cells(r + 1, 1).Value = dInput  '讲这次新输入的,写入第r+1行,第一列
           
           MsgBox "ig"
           
           ActiveSheet.Protect (qwerty)  '保护单元格,为下次打开做好准备,防止点击代替输入,必须手动输入,括号内是解除保护的密码

x:         MsgBox "坚持就是胜利!" '退出
  
End Sub

------------------------------------------------------------------------------------------------------------------------------

Private Sub password_Click()  '点按钮,调用上面的函数

Call dInput
End Sub









求各位高手达人神仙妖怪指点迷津!

附件

english learn test.rar(18.63 KB)

2011-8-3 21:30, 下载次数: 2

源码

作者: SGOC   发布时间: 2011-08-03

把你保护密码的括号去掉试试看了

作者: XZ19860527   发布时间: 2011-08-03

可能上面没讲清楚
VBA程序运行没有问题,但是每次在EXCEL中,点击取消保护,不需要输入密码。

如果在excel中人工设置密码,哪怕密码和vba程序中一样,也会导致VBA程序出错,

作者: SGOC   发布时间: 2011-08-03

我试过了,去掉密码括号,还是VBA可以运行,但在excel中可以不需要密码解锁

我看帮助中,有括号啊,。。。

作者: SGOC   发布时间: 2011-08-03

顶顶更健康

作者: SGOC   发布时间: 2011-08-03