宏在Excel中的锁定工作表中找不到单词

宏在Excel中的锁定工作表中找不到单词,excel,vba,Excel,Vba,我有一个代码,如果我找不到一个单词,它会显示一条消息,并关闭表单 代码工作正常,但如果我在表单上输入密码,它会一直显示找不到该单词 如果我删除了密码,那么“是”这个词会找到 搜索的代码 Dim r As Range Set r = Sheets("sheet1").Range("D:D").Find(What:="word", LookAt:=xlWhole, MatchCase:=False) If r Is Nothing Then MsgBox "The word was not fo

我有一个代码,如果我找不到一个单词,它会显示一条消息,并关闭表单

代码工作正常,但如果我在表单上输入密码,它会一直显示找不到该单词

如果我删除了密码,那么“是”这个词会找到

搜索的代码

Dim r As Range
Set r = Sheets("sheet1").Range("D:D").Find(What:="word", LookAt:=xlWhole, MatchCase:=False)
If r Is Nothing Then
  MsgBox "The word was not found"
End 'Closing the form
End If
密码

Dim wks1 As Worksheet
For Each wks1 In ActiveWorkbook.Worksheets
    wks1.Protect "1234", UserInterfaceOnly:=True, AllowSorting:=True, AllowFiltering:=True
    Next wks1
我很乐意得到任何帮助来解决我的问题


如果我的问题不明白,请写信给我,这是一个有效的例子

Sub test()
Dim ws As Worksheet
Dim pwd As String
Dim r As Range

pwd = "pippo"

For Each ws In Worksheets
    ws.Unprotect Password:=pwd
Next ws

Set r = Sheets("Foglio1").Range("D:D").Find(What:="word", LookAt:=xlWhole, MatchCase:=False)

If r Is Nothing Then
    MsgBox "parola non trovata"
Else
    MsgBox "parola trovata!"
End If

For Each ws In Worksheets
    ws.Protect Password:=pwd
Next ws

End Sub

我希望这对您有所帮助。

使用参数
UserInterFaceOnly
在VBA中保护工作表,然后VBA可以在甚至不允许选择受保护单元格的受保护工作表中找到单词

例如,在ThisWorkbook模块中,使用

Private Sub Workbook_Open()
    For Each ws In Worksheets
        ws.Protect Password:="secret", DrawingObjects:=True, Contents:=True, Scenarios:=True, userinterfaceonly:=True
    Next ws

End Sub
然后,您就可以运行代码,而无需首先解除工作表的保护

Sub test()
Dim ws As Worksheet
Dim r As Range

Set r = Sheets("Sheet1").Range("A:D").Find(What:="word", LookAt:=xlWhole, MatchCase:=False)

If r Is Nothing Then
    MsgBox "not found"
Else
    MsgBox "found"
End If
End Sub

打开工作簿时,有一个输入框,您必须在其中输入密码?如果我理解您的问题,请尝试以下方法:第一行代码SheetName。取消保护密码:=您的密码,最后是:SheetName。保护密码:=您的密码