【发布时间】:2018-12-13 16:41:50
【问题描述】:
我有一个在 Excel 2016 中创建的简单 VBA 代码,它根据用户是否输入“是/否”来隐藏其他工作表中的一些行。不幸的是,它不能在 Excel 2013 中运行。
错误信息是:
运行时错误“1004”应用程序定义或对象定义错误。
调试亮点位于以If nmdrange 开头的第 9 行。
有没有办法让它向后兼容?
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
【问题讨论】:
-
'它不运行' 既不是有效的错误代码也不是有用的错误描述。
-
我在那里看不到任何明显的东西。当您说“它不运行”时,它会做什么?
-
“很遗憾,它不能在 Excel 2013 中运行” - 你能扩展一下吗?它会出错吗?有什么错误?它停在哪里?我看不出任何明显不适用于 2016 年的东西,但也许您可以为我们缩小范围。
-
是的,我很抱歉 - 稍后会更新。
-
抱歉,我花了一段时间才添加错误。
Application.EnableEvents = False可以解决这个问题吗?
标签: excel vba backwards-compatibility