我有一些代碼,這使我的VBA代碼引起是什麼導致Excel VBA中的錯誤70?
Error 70: Permission Denied
。我無法弄清楚爲什麼,因爲我知道工作表是不受保護的,我可以對其進行更改。有問題的代碼是
sh.Name = "square"
它試圖重命名已經從另一片複製並粘貼到片材的形狀 - 有在片材具有該名稱的其它形狀,因爲這些代碼我有前已經刪除了具有該名稱的所有形狀。
任何有關可能導致此權限錯誤的建議?
我有一些代碼,這使我的VBA代碼引起是什麼導致Excel VBA中的錯誤70?
Error 70: Permission Denied
。我無法弄清楚爲什麼,因爲我知道工作表是不受保護的,我可以對其進行更改。有問題的代碼是
sh.Name = "square"
它試圖重命名已經從另一片複製並粘貼到片材的形狀 - 有在片材具有該名稱的其它形狀,因爲這些代碼我有前已經刪除了具有該名稱的所有形狀。
任何有關可能導致此權限錯誤的建議?
通常,這是由於試圖使用相同的名稱兩次造成的。嘗試這樣做,而不是:
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
這有幫助 - 我使用了你的NameUsed函數(進行了一些修改),發現具有該名稱的其他形狀並不總是被刪除(有時候當我嘗試打電話sh.Cut在那個形狀上) – 2009-06-04 08:18:16
「權限被拒絕」不是用於受保護的工作表,而是用於錯誤地訪問屬性或變量。
我相信在您嘗試訪問它並設置其「名稱」屬性時,「sh」爲空。嘗試查看是否在設置其屬性之前正確初始化了它。
檢查了這一點,而sh是絕對有效的形狀 – 2009-06-04 08:12:37
清潔,當您去。將對象設置爲空,字符串在使用後爲空值,並且不在函數和子例程之間使用相同的名稱。
你能提供一個你的代碼的例子嗎?你如何定義sh對象? – 2009-06-04 07:00:31