Если я понял вопрос, я столкнулся с той же проблемой.Когда есть несколько перекрывающихся диаграмм, их приоритет визуализации следует за ZOrder
.
В Excel 2003, когда кто-то выбирал диаграмму, он выходил на передний план (по крайней мере, для визуализации я не знаю, является ли ее ZOrder
был временно изменен).Когда диаграмма была отменена, ее приоритет визуализации вернулся к «обычному».
Начиная с Excel 2007, диаграммы временно не выходят на передний план для визуализации при выборе, поэтому, если они скрыты за другими диаграммами (или, возможно, другимиShape
s), единственная возможность увидеть их полностью - вывести их на передний план.Это имеет два недостатка: 1) нужно больше кликов, 2) (возможно, намеревается) ZOrder
потеряно.
Четный Джон Пельтье , в сообщение от 5 мая 2009 , в котором упоминается, что для этого нет обходного пути.
Я пытался найти решение, основанное на:
- Обнаружении активации диаграммы.
- Сохранение его текущего
ZOrder
для последующего использования. - Вывод его на передний план.
- После отмены выбора диаграммы, восстановление ее исходного
ZOrder
.
Это основная идея, и схема работает довольно хорошо , с несколькими глюками.Я фактически основал свой код на странице Джона Пельтье , цитируемой здесь brettdj.Одна из модификаций:
Private Sub EvtChart_Activate()
Application.EnableEvents = False
ActivatedChart = EvtChart.name
If (TypeName(EvtChart.Parent) = "ChartObject") Then
' Chart is in a worksheet
Dim chObj As ChartObject
Set chObj = EvtChart.Parent
chObj.BringToFront
Else
' Chart is in its own sheet
End If
Application.EnableEvents = True
End Sub
Используйте нечто подобное для EvtChart_Deactivate
.Я надеюсь, что идея полезна.