excelr的 VBA 运行时错误1004"save"作用于对象"-wrokbook"时失败,求高手解决!

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)Cells.Interior.Color=xlNoneAct... Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.Color = xlNone
ActiveCell().EntireRow.Interior.Color = RGB(255, 255, 160)
If Target.Address = "$B$5" Then
Dim dic As Object
Dim arr, i%
arr = Sheet4.Range("B8:B" & Sheet4.[B100000].End(3).Row)
Set dic = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr)
If arr(i, 1) <> "" Then dic(arr(i, 1)) = ""
Next
With Range("$B$5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Join(dic.keys, ",")
End With
End If
If Target.Address = "$C$5" Then
arr = Sheet4.Range("A7:A" & Sheet4.[A100000].End(3).Row)
Set dic = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr)
If arr(i, 1) <> "" Then dic(arr(i, 1)) = ""
Next
With Range("$C$5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Join(dic.keys, ",")
End With
End If
If Target.Address = "$D$5" Then
arr = Sheet4.Range("A7:A" & Sheet4.[A100000].End(3).Row)
Set dic = CreateObject("scripting.dictionary")
For i = 1 To UBound(arr)
If arr(i, 1) <> "" Then dic(arr(i, 1)) = ""
Next
With Range("$D$5").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Join(dic.keys, ",")
End With
End If
End Sub
展开
 我来答
姓王的wy451

2017-08-09 · TA获得超过48.3万个赞
知道大有可为答主
回答量:8万
采纳率:78%
帮助的人:8889万
展开全部
代码中并没有使用 save 方法,应该不会出现这个错误。
我检验了一下代码,没有错误。只是代码设计得不够精练,重复代码太多。另外存在一个小小问题,举例来说:arr = Sheet4.Range("A7:A" & Sheet4.[A100000].End(3).Row),如果A6以下没有数据,程序设置的数据有效性系列就背离了你的设计意图,会设置为A7上面的最近一个数据。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式