Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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 AllowediTunes功能失败_Excel_Vba - Fatal编程技术网

Excel AllowediTunes功能失败

Excel AllowediTunes功能失败,excel,vba,Excel,Vba,我有一个从Excel中删除允许编辑范围的函数,但我不断收到一个错误,表明删除对象alloweditrange的方法失败了 Sub RemoveUserEditRange() Dim ws As Worksheet, rng As Range, aer As AllowEditRange Set ws = ThisWorkbook.Sheets("Protection") ws.Unprotect For Each aer In ws.Protection.Allo

我有一个从Excel中删除允许编辑范围的函数,但我不断收到一个错误
,表明删除对象alloweditrange的方法失败了

Sub RemoveUserEditRange()
    Dim ws As Worksheet, rng As Range, aer As AllowEditRange
    Set ws = ThisWorkbook.Sheets("Protection")
    ws.Unprotect
    For Each aer In ws.Protection.AllowEditRanges
        aer.Delete
    Next
End Sub

尝试在循环之前选择图纸:

ws.Select

尝试在循环之前选择图纸:

ws.Select

你确定你有那个范围吗

试试这个

Sub RemoveUserEditRange()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Protection")

    With ws
        .Unprotect
        With .Protection
            If .AllowEditRanges.Count = 0 Then
                MsgBox "Nothing to delete"
            Else
                '~~> Check if there is actually a range
                Do While .AllowEditRanges.Count > 0
                    .AllowEditRanges(1).Delete
                Loop
            End If
        End With
        .Protect '<~~ ???
    End With
End Sub
Sub-RemoveUserEditRange()
将ws设置为工作表
设置ws=ThisWorkbook.Sheets(“保护”)
与ws
.解除保护
有保护
如果.AllowEditRanges.Count=0,则
MsgBox“无需删除的内容”
其他的
“~~>检查是否确实存在范围
执行While.AllowEditRanges.Count>0
.AllowEditRanges(1)。删除
环
如果结束
以

.保护'你确定你有这个范围吗

试试这个

Sub RemoveUserEditRange()
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Protection")

    With ws
        .Unprotect
        With .Protection
            If .AllowEditRanges.Count = 0 Then
                MsgBox "Nothing to delete"
            Else
                '~~> Check if there is actually a range
                Do While .AllowEditRanges.Count > 0
                    .AllowEditRanges(1).Delete
                Loop
            End If
        End With
        .Protect '<~~ ???
    End With
End Sub
Sub-RemoveUserEditRange()
将ws设置为工作表
设置ws=ThisWorkbook.Sheets(“保护”)
与ws
.解除保护
有保护
如果.AllowEditRanges.Count=0,则
MsgBox“无需删除的内容”
其他的
“~~>检查是否确实存在范围
执行While.AllowEditRanges.Count>0
.AllowEditRanges(1)。删除
环
如果结束
以

.Protect“的确,该代码起了作用。我想我通过激活工作表解决了我的挑战。实际上,工作簿位于不同的工作表上,当我在运行代码之前重新激活工作表时。问题消失了。有趣的是,该工作表需要激活,非常不寻常。事实上,该代码工作正常。我想我通过激活工作表解决了我的挑战。实际上,工作簿位于不同的工作表上,当我在运行代码之前重新激活工作表时。问题消失了。有趣的是,这张表需要激活,非常不寻常。