因此,我在工作簿中创建了一个“名称”,以帮助我使用宏来运行高级过滤器。公式如下:
=OFFSET('Property Data'!$A$6,,,COUNTA('Property Data'!$A$5:$N$69),14)
这很好,除了我有一个“删除”函数写入工作簿,允许您删除行.包括第6行。删除第6行时,此“名称”中的公式更改为:
=OFFSET('Property Data'!#REF!,,,COUNTA('Property Data'!$A$5:$N$69),14)
这显然破坏了高级过滤器的宏,因此用户无法编辑数据库中的现有条目。
所以,我需要做的是找到一种方法来锁定这个公式,这样它就不会抛出一个错误,说明要引用的单元格已经被删除,并且它只使用了新的第6行。
我见过使用括号"{}“这样的操作,但我不太确定它是如何工作的。有什么想法吗?
发布于 2016-07-01 13:22:07
您应该修改您的名称公式ao --它没有被行删除所修改。
有两种方式:
INDIRECT
指定范围
=偏移(间接(“属性数据”!$A$6),,,COUNTA('Property Data'!$A$5:$N$69),14)对于这些(和原始的)行,删除也可能影响'Property Data'!$A$5:$N$69
部分。如果这是不可取的,请使用INDIRECT
来指定。
发布于 2016-07-01 12:57:02
每次有人删除一行时重新分配公式。
来检测删除行。
Private Sub Worksheet_Activate()
glOldRows = Me.UsedRange.Rows.Count
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Me.UsedRange.Rows.Count < glOldRows Then
MsgBox “Row deleted”
End If
glOldRows = Me.UsedRange.Rows.Count
End Sub
现在,您希望用重新分配替换MsgBox
行。
ThisWorkbook.Names("FilterData").RefersTo = "=OFFSET('Property Data'!$A$6,,,COUNTA('Property Data'!$A$5:$N$69),14)"
因此,最终的结果应该是:
希望这能有所帮助。
干杯
https://stackoverflow.com/questions/38153263
复制