Excel 2016要求输入运行VBA的密码

Excel 2016要求输入运行VBA的密码,excel,vba,Excel,Vba,我已经提供了一个密码来取消对活动工作表的保护以执行宏,但它仍然要求密码来执行其中的某些部分(1)将大小写更改为大写,以及(2)清除内容。我不知道为什么?你能告诉我哪里错了吗!我的代码是- Sub REFRESH_DATA() Dim rng As Range Dim last As Long Application.ScreenUpdating = False ActiveSheet.Unprotect Password:="****" Set rng = Range("A8:R" &

我已经提供了一个密码来取消对活动工作表的保护以执行宏,但它仍然要求密码来执行其中的某些部分(1)将大小写更改为大写,以及(2)清除内容。我不知道为什么?你能告诉我哪里错了吗!我的代码是-

Sub REFRESH_DATA()
Dim rng As Range
Dim last As Long

Application.ScreenUpdating = False

ActiveSheet.Unprotect Password:="****"
Set rng = Range("A8:R" & last)
last = Range("B99000").End(xlUp).Row

With rng.Borders  ' Blue border
    .LineStyle = xlContinuous
    .Color = vbBlue
    .Weight = xlThin
End With

If Range("B8") <> "" Then   ''''''' Upper case''''''
    ActiveSheet.Range("B8:L21000").SpecialCells(xlCellTypeConstants).Select
  With Selection
    .Value = UCase(.Value)
  End With
End If

Range("A" & last + 1 & ":R" & 90000).ClearContents

ActiveSheet.Protect Password:="****"

End Sub
子刷新_数据()
变暗rng As范围
持续时间一样长
Application.ScreenUpdating=False
ActiveSheet.Unprotect密码:=“**”
设置rng=范围(“A8:R”和最后一个)
最后=范围(“B99000”)。结束(xlUp)。行
带rng.Borders的蓝色边框
.LineStyle=xlContinuous
.颜色=蓝色
.Weight=xlThin
以
如果范围(“B8”)那么大写
ActiveSheet.Range(“B8:L21000”).SpecialCells(xlCellTypeConstants)。选择
有选择
.Value=UCase(.Value)
以
如果结束
范围(“A”&last+1&“:R”&90000)。ClearContents
ActiveSheet.保护密码:=“**”
端接头

如果我理解你的问题,你必须:

1) 取消对所有工作表的保护 范例

'您的代码,并使用名称激活工作表 范例

作为最后一次操作,保护所有板材

For Each ws In Worksheets
    ws.Protect Password:=pwd
Next ws

希望这能有所帮助

您确定第一个位确实有效吗?带有
Rng
对象的位?因为非常奇怪的是,在您已经使用它声明了一个范围之后,您正在填充
last
,哪一行给出了错误?如果是
ActiveSheet.Unprotect
行,则密码可能是错误的。如果是任何其他行,则需要显式限定对
Range
的调用,而不是使用隐式
ActiveSheet
。我们知道这是在
.Value=UCase(.Value)
之前,因为这是一个类型不匹配错误-您不能像那样将数组传递给
UCase
。总之,首先,请仔细检查您的密码是否确实正确。然后,在使用最后一行声明范围(交换这些行)之前,需要计算最后一行。然后,您需要使用工作表正确限定对象(范围)。当您从包含代码的工作表运行它时,这将正常工作,但是如果您切换工作表并运行代码,您将引用不同的工作表(包含代码的工作表和
ActiveSheet
)。最后,您需要循环一些定义的范围(或数组),并将每个单元格分别转换为
UCase
。是的,它正在工作。密码是正确的,当我在没有密码的情况下使用它时,上面的代码工作正常。为了找出错误,我做了很多更改并尝试,交换“last”和“rng”行就是其中之一。当我点击以黄色突出显示的调试选项时出错意味着问题只在这一部分。
Worksheets(sheetname).Activate
For Each ws In Worksheets
    ws.Protect Password:=pwd
Next ws