У меня есть два рабочих листа, содержащих диаграммы, и используйте макрос для запуска по всем листам с диаграммами в них и обновляйте значения, указанные на рисунке.
Однако я столкнулся с проблемой при попытке ссылаться на диаграммы в листах после первого - хотя ссылка на рабочий лист меняется, ссылка на диаграмму не соответствует.
Цикл выглядит следующим образом:
For Each ws In ThisWorkbook.Worksheets
Debug.Print ws.Name
Debug.Print ws.ChartObjects("Kortsone").Chart.Name
With ws.ChartObjects("Kortsone").Chart
...
End With
Next ws
И вывод, который я получаю в ближайшее окно, следующий:
Grafar ovn 3
Grafar ovn 3 Kortsone
Grafar ovn 4
Grafar ovn 3 Kortsone
Как вы можете видеть ссылку на изменения листа, но ссылка на диаграмму не указана.
Есть ли способ исправить это, или мне нужно переименовать все мои диаграммы с уникальными именами?
Я использую Excel 2013
- edit - Я уже провел некоторое тестирование на основе предложений в комментариях, и кажется, что то, что напечатано в непосредственном окне, зависит от того, что в настоящее время является активным листом.
Попытка использовать for each chartobject
столкнулась с теми же проблемами, что и раньше:
Sub test2()
Dim ws As Worksheet
Dim ch As ChartObject
For Each ws In ThisWorkbook.Worksheets
For Each ch In ws.ChartObjects
If ws.CodeName = "Graf4" Then
Debug.Print ws.Name
Debug.Print ch.Name
Debug.Print ch.Chart.Name
End If
Next ch
Next ws
End Sub
Дал:
Grafar ovn 4
Kortsone
Grafar ovn 3 Kortsone
Grafar ovn 4
Langsone
Grafar ovn 3 Langsone
...