【发布时间】:2014-08-26 04:18:00
【问题描述】:
我有一些 vba 代码可以添加用户名和密码来设置用户编辑范围。
该代码在 Excel 2007 中运行良好,但是当我尝试在 Excel 2013 中运行它时,我不断收到运行时错误 1004 应用程序定义或对象定义错误。
代码在 erTimeInputs 行处停止。
我相信这是因为变量 erTimeInputs 没有任何值,但我无法让它接受一个值。我试图将其定义为各种数据类型,但似乎没有任何效果。
这是我的代码:
Sub AddUserEditRanges()
'Update username and password before running this macro
Dim UserNameArr() As Variant
Dim UserRangeArr() As Variant
Dim UserPsswdArr() As Variant
Dim v As Variant
Dim LastUserRow As Integer
Dim i As Integer
Dim ws As Worksheet, rng As Range, UserRange As Range, aer As AllowEditRange
Dim UserName As String
Dim Psswd As String
Dim erTimeInputs as Variable
'Find number of users
LastUserRow = Range("A170").End(xlDown).Row
'set arrays
UserNameArr = Range("B168:B" & LastUserRow).Value
UserPsswdArr = Range("C168:C" & LastUserRow).Value
UserRangeArr = Range("D168:D" & LastUserRow).Value
For v = LBound(UserNameArr) To UBound(UserNameArr)
UserName = UserNameArr(v, 1)
UserRange = UserRangeArr(v, 1)
Psswd = UserPsswdArr(v, 1)
'Add edit ranges to the worksheets for all users.
Set erTimeInputs = _
Worksheets("Week1").Protection.AllowEditRanges.Add(Title:= _
UserName, Range:=Worksheets("Week1") _
.Range(UserRange), Password:=Psswd)
Set erTimeInputs = _
Worksheets("Week2").Protection.AllowEditRanges.Add(Title:= _
UserName, Range:=Worksheets("Week2") _
.Range(UserRange), Password:=Psswd)
Next
End Sub
【问题讨论】:
-
Dim erTimeInputs as Variable这行肯定是错的。没有Variable类型。或许您正在考虑Variant,就像您定义的其他类型一样? -
您可以将其声明为@CodyGray 评论的
Variant,或者您可以将其明确声明为:Dim erTimeInputs As AllowEditRange。 -
对不起,变量只是我的拼写错误。我尝试将其声明为 Variant、AllowEditRange、Range 和其他类型,但均未成功。