Как подвинуть диаграмму на листе Excel в нужное место?

Программирование на Visual Basic for Applications
igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение igor_m » 08.09.2014 (Пн) 14:38

С ходу не получается найти. Прошу помощи.

При создании диаграммы макросом
dim diag as chart
Set diag = Charts.Add
diag.Location xlLocationAsObject, "Sheet1"
Она помещается в середину листа.
Как подвинуть ее в нужное место, чтобы ее top & left совпали с top & left ячейки B30 ?

Это делается в абсолютных единицах (т.е. просуммировать высоту всех предыдущих строк и ширину столбцов) или можно относительно ячейки задать координаты? И что за объект, который включает диаграмму, и координаты которого можно задавать? И как изменить размер диаграммы (width & height)?

В общем нужно вписать диаграмму точно в нужное место на листе относительно определенной ячейки.
Кому не трудно - просто напишите решение. Excel 2010.
Последний раз редактировалось igor_m 08.09.2014 (Пн) 15:13, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.09.2014 (Пн) 14:56

Записать макрос и посмотреть код не подходит?

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение igor_m » 08.09.2014 (Пн) 15:35

Макрос чего? Increment ??? Так диаграммы должны каждый раз вставать в разное место в зависимости от того какого размера таблица сформируется.
Т.е. мне нужно не просто всегда вставлять ее в одно место, а расчитывать координаты куда вставить - четкая привязка есть к ячейкам.

И дубовое решение сосчитать высоту всех строк и ширину столбцов и подвинуть - так сделано. Должен же быть более нормальный путь для таких случаев.

For i = 1 To iStr + 3
h = h + .Rows(Trim(Str(i)) & ":" & Trim(Str(i))).RowHeight
Next i
.Shapes("Диаграмма 1").Top = h
.Shapes("Диаграмма 1").Left = .Columns("A:A").ColumnWidth

Потом я еще не понимаю как к диаграммам обращаться. Их несколько. diag.Name и diag.Index не работают. Вот так обращаться: .Shapes("Диаграмма 1") - это нужно учитывать очередность в которой они создаются и уже по такому имени двигать в нужное место - тоже не сильно удобно.

Кто умеет, помогите пожалуйста. Как подвинуть диаграмму (т.е. левый верхний угол всей области диаграммы) в левый верхний угол определенной ячейки ? Excel 2010.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.09.2014 (Пн) 15:53

igor_m писал(а):Макрос чего?

Перемещения диаграммы.

igor_m писал(а):И дубовое решение сосчитать высоту всех строк и ширину столбцов и подвинуть так сделано.

Собственно, я про это и думал.

Например, вот вариант, полученный записью макроса:
Код: Выделить всё
    ActiveSheet.ChartObjects("Chart 2").Activate
    ActiveChart.Parent.Cut
    Range("E13").Select
    ActiveSheet.Paste

А вот правильный вариант:
Код: Выделить всё
    Dim Chart As Shape, Cell As Range
    Set Chart = ActiveSheet.Shapes("Chart 3")
    Set Cell = ActiveSheet.Cells(13, 5)
    Chart.Left = Cell.Left
    Chart.Top = Cell.Top

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.09.2014 (Пн) 15:56

igor_m писал(а):Потом я еще не понимаю как к диаграммам обращаться.

Весьма вероятно, что метод Add уже сам возвращает нужный объект - дальше с ним и работать, а имена вообще не использовать.

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение igor_m » 08.09.2014 (Пн) 16:07

Спасибо.
Cut/Paste работает. Начало есть.

Очень благодарю. Привязка к диапазону (ячейки) - то, что нужно.
Последний раз редактировалось igor_m 08.09.2014 (Пн) 16:11, всего редактировалось 1 раз.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 08.09.2014 (Пн) 16:09

igor_m писал(а):Cut/Paste работает. Начало есть.

Эм.. А чем второй вариант не угодил? Он же лучше.

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение igor_m » 08.09.2014 (Пн) 16:13

Не успел сразу опробовать.
Теперь попробовал и оценил. Спасибо, а то время поджимает, все найти самому.

Template
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 09.09.2006 (Сб) 18:03

Re: Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение Template » 08.09.2014 (Пн) 21:10

igor_m, На самом деле координаты диаграммы можно задавать сразу при ее создании, т.e. :

Код: Выделить всё
Dim cell As Range, diag As ChartObject

Set cell = Worksheets("Sheet1").Range("B30")
Set diag = Worksheets("Sheet1").ChartObjects.Add(cell.Left, cell.Top, 300, 200)

igor_m
Постоялец
Постоялец
 
Сообщения: 343
Зарегистрирован: 22.03.2002 (Пт) 12:40

Re: Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение igor_m » 09.09.2014 (Вт) 8:16

Template,
тоже спасибо.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 09.09.2014 (Вт) 12:05

Template писал(а):На самом деле координаты диаграммы можно задавать сразу при ее создании

Спасибо. А то я в Excel'е полазил, а в справку заглянуть даже не подумал :)

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 157
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Как подвинуть диаграмму на листе Excel в нужное место?

Сообщение Sam777e » 09.09.2014 (Вт) 14:47

igor_m писал(а):Потом я еще не понимаю как к диаграммам обращаться. Их несколько. diag.Name и diag.Index не работают. Вот так обращаться: .Shapes("Диаграмма 1") - это нужно учитывать очередность в которой они создаются и уже по такому имени двигать в нужное место - тоже не сильно удобно.

Создал диаграмму - дал ей осмысленное имя, создал другую - дал ей другое осмысленное имя, ...
Naming an Excel Chart
http://peltiertech.com/Excel/ChartsHowTo/NameAChart.html
Здоровья и удачи


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 25

    TopList