我有一个在Excel 2016中创建的简单VBA代码,它根据用户是否输入“是/否”来隐藏其他工作表中的某些行。不幸的是,它不能在Excel 2013中运行。
错误消息是:
运行时错误'1004'应用程序定义的错误或对象定义的错误。
第9行中的调试突出显示以If nmdrange
开头。
有什么办法可以使其向后兼容?
Sub Worksheet_Change(ByVal Target As Range)
Dim nmdrange As Name
Dim Row As Range
If Not Intersect(Target, Range("screener1")) Is Nothing Then
'Input data sheet
With Sheet4
For Each nmdrange In ThisWorkbook.Names
If nmdrange.RefersToRange.Parent.Name = .Name Then '***ERROR HERE***
'Loop over benefits
.Range(nmdrange.RefersTo).Rows.EntireRow.Hidden = (.Range(nmdrange.RefersTo).Cells(1, 1).Value = "No")
End If
Next nmdrange
End With
With Sheet5
For Each nmdrange In ThisWorkbook.Names
If nmdrange.RefersToRange.Parent.Name = .Name Then
'Loop over benefits
.Range(nmdrange.RefersTo).Rows.EntireRow.Hidden = (.Range(nmdrange.RefersTo).Cells(1, 1).Value = "No")
End If
Next nmdrange
'Hide in summary table
For Each Row In .Range("sum_b1").Rows
Row.Rows.EntireRow.Hidden = (Row.Rows.Cells(1, 1).Value = "No")
Next Row
End With
End If
End Sub
答案 0 :(得分:0)
您是否有不引用工作表的命名范围?
命名范围也可以引用常量或公式-因此可以称为VAT
,并且具有固定值20%
当循环到达此命名范围时,将找不到父工作表,因为它没有工作表。