У меня есть простой код VBA, созданный в Excel 2016, который скрывает некоторые строки на других листах в зависимости от того, вводит ли пользователь «да / нет».К сожалению, он не запускается в 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
Существует два именованных диапазона, которые относятся не к диапазону, а к одной ячейке / значению, например: