ShowDependents显示ScreenUpdating = False

时间:2017-05-22 07:37:39

标签: excel excel-vba excel-2016 vba

如果ActiveCell具有依赖单元格(即另一个单元格具有指向ActiveCell的公式),则此代码将短暂闪烁箭头。 考虑到ScreenUpdating = False语句,这是意料之外的。

Public Sub ShowDependents()
    Application.ScreenUpdating = False

    ActiveCell.ShowDependents
    ActiveCell.Parent.ClearArrows
End Sub

我想这是Excel中的一个错误,但它真的很烦人 - 这意味着由于用户体验不佳,我们无法使用ShowPrecedents / NavigateArrow。

任何想法,如果有办法解决这个问题 - 使用ShowDependents而不显示任何箭头?

这是在Excel 2016中,我没有测试过其他版本。

(请注意,除了显示问题外,简化代码实际上并没有做任何有用的事情)

编辑:哈哈!我(有点)解决了它! 我没有调用ClearArrows,而是使用

ShowDependents Remove:=True 

并且没有闪烁的箭头: - )

下面修改后的代码找到第一个依赖单元格并将焦点设置回原始单元格。它仍然没有做任何有用的事情,但它表明可以避免闪烁的箭头。

现在,当我打电话给子时,仍然有一点点闪烁。看不见箭头,只是闪烁。可能是可以接受但很讨厌,所以请随意提出如何解决这一部分的想法: - )

Public Sub ShowDependents()
Dim source As Range, Target As Range
Set source = ActiveCell

Application.ScreenUpdating = False

source.ShowDependents
Set Target = source.NavigateArrow(False, 1) ' Will set focus on dependent cell
source.Worksheet.Activate                   ' Reset focus to selected cell
source.ShowDependents Remove:=True          ' ClearArrows will flash arrow
End Sub

1 个答案:

答案 0 :(得分:0)

避免使用.ShowDependents。您可以使用.NavigateArrow而不使用.Dependents显示箭头,因此您甚至无需停用.ScreenUpdating

Public Sub ShowDependents()
    ActiveCell.Dependents.NavigateArrow True, 1
End Sub