Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 无法设置characters类的text属性_Excel_Vba - Fatal编程技术网

Excel 无法设置characters类的text属性

Excel 无法设置characters类的text属性,excel,vba,Excel,Vba,此代码保护除一张图纸外的所有图纸。如果工作表受到保护,则此选项有效,但如果工作表未受到保护,则会显示错误消息 ws是打开按钮的工作表 wsheet用于保护除一张之外的所有纸张。基本上,当用户单击工作表ws按钮时,我希望所有工作表(包括按钮所在的工作表)都受到保护,但名为“加班”的工作表除外。当他们再次单击时,将取消对所有工作表的保护 Dim wSheet As Worksheet Dim wb As Workbook Dim ws As Worksheet Set wb

此代码保护除一张图纸外的所有图纸。如果工作表受到保护,则此选项有效,但如果工作表未受到保护,则会显示错误消息

ws是打开按钮的工作表

wsheet用于保护除一张之外的所有纸张。基本上,当用户单击工作表ws按钮时,我希望所有工作表(包括按钮所在的工作表)都受到保护,但名为“加班”的工作表除外。当他们再次单击时,将取消对所有工作表的保护

Dim wSheet As Worksheet
    Dim wb As Workbook
    Dim ws As Worksheet

    Set wb = ThisWorkbook
    Set ws = wb.Sheets(1)


        Application.ScreenUpdating = False

            For Each wSheet In Worksheets
                If wSheet.Name = "Overtime" Then
                    wSheet.Unprotect Password:="12345"
                    ws.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Vérouiller" 'THIS IS WHERE IT GIVES ME THE ERROR
                ElseIf wSheet.ProtectContents = True Then
                    wSheet.Unprotect Password:="12345"
                    ws.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Vérouiller"
                Else

                    wSheet.Unprotect Password:="12345"
                    ws.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Déverouiller"
                    wSheet.Protect Password:="12345"


                End If
            Next wSheet

 Application.ScreenUpdating = True

请尝试以下代码

Dim wSheet As Worksheet
Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Sheets(1)


Application.ScreenUpdating = False

For Each wSheet In wb.Worksheets
    If wSheet.Name <> "Overtime" Then
        If wSheet.ProtectContents Then
            wSheet.Unprotect Password:="12345"
            If wSheet.Name = ws.Name Then
                wSheet.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Vérouiller"
            End If
        Else
            If wSheet.Name = ws.Name Then
                wSheet.Shapes("Rectangle_LOCK").TextFrame.Characters.Text = "Déverouiller"
            End If
            wSheet.Protect Password:="12345"
        End If
    End If
Next wSheet

Application.ScreenUpdating = True
将工作表设置为工作表
将wb设置为工作簿
将ws设置为工作表
设置wb=ThisWorkbook
设置ws=wb.Sheets(1)
Application.ScreenUpdating=False
对于wb.工作表中的每个wSheet
如果wSheet.Name为“加班”,则
如果是wSheet.ProtectContents,则
wSheet.Unprotect密码:=“12345”
如果wSheet.Name=ws.Name,则
wSheet.Shapes(“矩形锁”).TextFrame.Characters.Text=“Vérouiller”
如果结束
其他的
如果wSheet.Name=ws.Name,则
wSheet.Shapes(“矩形锁”).TextFrame.Characters.Text=“Déverouiller”
如果结束
wSheet.Protect密码:=“12345”
如果结束
如果结束
下一页
Application.ScreenUpdating=True

它在那一行给你一个错误,因为它上面的那一行是在保护工作表。该工作表需要取消保护。尝试先添加一行以取消保护…仍然会出现错误看起来
wSheet
ws
在循环中的特定迭代中没有引用同一工作表。我建议你编辑你的帖子,用文字准确描述你想做什么。添加更多细节