Добрый день!
Позволю себе продолжить тему. Да, хорошо-бы поменять название темы (я вначале не корректно сформулировал - хотел просто имя достать) на, например:"Масштабирование диаграмм" Как это сделать?
Спасибо за идею блокировки ложного вызова другой диаграммы
Юрий М, в # 39, и за развитие, я немного изменил алгоритм, с учётом моих требований - вывод увеличенных диаграмм в начало таблицы и возврат обратно. Правда фиксацию начального положения диаграммы через адрес ячейки Adr = .TopLeftCell.Address, пришлось изменить на фиксацию по пикселям, т.к. в том случае возврат на место оказывался не точным. Ну, и пока без мультипликации, хотя это и красиво. Коэффициент масштабирования туда-обратно у меня постоянный, определил через переменную, что тоже более точно. Вот что получилось:
Код |
---|
Option Explicit
Dim flag As Boolean
Dim x, y, x_old, y_old, k As Single
Dim sName1, sName As String
Sub Mashtab()
k = 2
sName = Application.Caller
With ActiveSheet.Shapes(sName)
x = .left
y = .top
If flag Then 'первое нажатие (flag=0) - таблица свободна
If sName <> sName1 Then Exit Sub ' не та таблица
.ScaleWidth 1 / k, msoFalse, msoScaleFromTopLeft ' та же таблица, уменьшим обратно.
.ScaleHeight 1 / k, msoFalse, msoScaleFromTopLeft
.left = x_old '
.top = y_old
Else 'увеличение
sName1 = sName
x_old = x
y_old = y
Range("a1").Select ' в начало таблицы для удобства (не обяз.)
.left = 5 'место просмотра (мне нужно так) -
.top = 40
.ScaleWidth k, msoFalse, msoScaleFromTopLeft
.ScaleHeight k, msoFalse, msoScaleFromTopLeft
End If
End With
flag = Not flag ' инверсия флага
End Sub
|