Что вызывает ошибку 70 в Excel VBA? - PullRequest
1 голос
/ 04 июня 2009

У меня есть код, который продолжает вызывать

Error 70: Permission Denied

в моем коде VBA. Я не могу понять почему, потому что я знаю, что рабочая таблица не защищена и что я могу внести в нее изменения. Код в вопросе

sh.Name = "square"

Он пытается переименовать фигуру, которая была скопирована с другого листа и вставлена ​​в лист - на листе нет других фигур с таким именем, потому что до этого кода я уже удалил все фигуры с этим именем.

Любое предложение относительно того, что может вызвать эту ошибку разрешений?

Ответы [ 3 ]

5 голосов
/ 04 июня 2009

Обычно это вызвано попыткой использовать одно и то же имя дважды. Попробуйте сделать это вместо:

Sub Example()
    Dim lngIndx As Long
    Dim ws As Excel.Worksheet
    Dim shp As Excel.Shape
    Set ws = Excel.ActiveSheet
    Set shp = ws.Shapes.AddShape(msoShapeOval, 174#, 94.5, 207#, 191.25)
    If NameUsed(ws, "Foo") Then
        lngIndx = 2
        Do While NameUsed(ws, "Foo" & CStr(lngIndx))
            lngIndx = lngIndx + 1
        Loop
        shp.name = "Foo" & CStr(lngIndx)
    Else
        shp.name = "Foo"
    End If
End Sub

Private Function NameUsed(ByVal parent As Excel.Worksheet, ByVal name As String) As Boolean
    Dim shp As Excel.Shape
    Dim blnRtnVal As Boolean
    name = LCase$(name)
    For Each shp In parent.Shapes
        If LCase$(shp.name) = name Then
            blnRtnVal = True
            Exit For
        End If
    Next
    NameUsed = blnRtnVal
End Function
2 голосов
/ 10 апреля 2012

Чисто, как вы идете. Ничего не устанавливайте для объектов, строки - для нулевой строки после их использования и не используйте одинаковые имена между функциями и подпрограммами.

0 голосов
/ 04 июня 2009

«Отказано в доступе» не для защищенного рабочего листа, а для неправильного доступа к свойству или переменной.

Я считаю, что "sh" является нулевым в том месте, где вы пытаетесь получить к нему доступ и установить его свойство "Имя". попытайтесь проверить, правильно ли вы его инициализировали, прежде чем устанавливать его свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...