VBA: Рассказать две диаграммы с одним и тем же именем? - PullRequest
0 голосов
/ 15 мая 2019

Я работаю над файлом, который прошел через много рук. Одна из нужных мне диаграмм называется "Dummy_1"; к сожалению, другой график имеет то же имя. Так что ws.ChartObjects("Dummy_1").Copy дает мне не тот.

Есть ли способ провести различие между ними? Или вообще есть ли способ нацелить диаграмму, кроме как по имени? Я знаю, что могу выбрать его по индексу, но это не совсем то, что я бы назвал «целевым». Есть ли возможность выбрать график, ближайший к определенной ячейке?

1 Ответ

1 голос
/ 15 мая 2019

Вы можете определить, какой график находится ближе всего к целевому местоположению, так что:

Dim ch As ChartObject, chr As Long, chc As Long, r As Long, c As Long, chin As Long, locr As Long, locc As Long
r = 24  'row 24, target
c = 11  'column k, target
For Each ch In ActiveSheet.ChartObjects
    chr = ch.TopLeftCell.Row
    chc = ch.TopLeftCell.Column
    If Sqr((r - chr) ^ 2 + (c - chc) ^ 2) < Sqr((r - locr) ^ 2 + (c - locc) ^ 2) Or locr = 0 Then
        locr = chr
        locc = chc
        chin = ch.Index
    End If
Next ch
Debug.Print chin

Вы можете использовать индекс диаграммы (подбородок) для копирования так:

activesheets.chartobjects(chin).activate
activechart.parent.copy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...