powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблемы с получением Shape
6 сообщений из 6, страница 1 из 1
проблемы с получением Shape
    #34758420
Василий Теркин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Пишу класс-обвязку по функциям экселя на шарпе (позднее связывание), возникла такая проблема с экселем, излазил все доку в нем, но ответа не нашел.
Вобщем, новая диаграмма добавляется методом Add. Для того, чтобы например изменить ее размеры, т.е. вызвать метод ScaleWidth с нужными параметрами, нужен объект Shape из ShapеRange. Для того, чтобы получить Shape из ShapеRange, нужно знать ее индекс. А вот и непонятный для меня вопрос, как узнать индекс в ShapеRange только что добавленной диаграммы???

Благодарю всех за помощь!!!
...
Рейтинг: 0 / 0
проблемы с получением Shape
    #34758726
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только что созданная диаграмма будет иметь последний индекс в коллекции. Т.е., например, на VBA можно изменить её размер так:
Код: plaintext
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).ScaleHeight  0 . 5 , msoFalse, msoScaleFromTopLeft 
...
Рейтинг: 0 / 0
проблемы с получением Shape
    #34758744
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub Macro1()
    Sheet1.Shapes.AddChart(xl3DLine,  200 ,  200 ,  100 ,  100 ).ScaleHeight  1 . 5 , msoFalse
End Sub

Sub Macro2()
    With Sheet1.Shapes.AddChart(xl3DLine,  200 ,  200 ,  100 ,  100 )
        .ScaleHeight  1 . 5 , msoFalse
        .ScaleWidth  1 . 5 , msoFalse
    End With
End Sub

Sub Macro3()
    Dim ct As Shape
    Set ct = Sheet1.Shapes.AddChart(xl3DLine,  200 ,  200 ,  100 ,  100 )
    ct.ScaleHeight  1 . 5 , msoFalse
    ct.ScaleWidth  1 . 5 , msoFalse
End Sub

Sub Macro4()
    Dim x As String
    x = Sheet1.Shapes.AddChart(xl3DLine,  200 ,  200 ,  100 ,  100 ).Name
    Sheet1.Shapes(x).ScaleHeight  1 . 5 , msoFalse
    Sheet1.Shapes(x).ScaleWidth  1 . 5 , msoFalse
End Sub




KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
проблемы с получением Shape
    #34758748
Василий Теркин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbaproТолько что созданная диаграмма будет иметь последний индекс в коллекции. Т.е., например, на VBA можно изменить её размер так:
Код: plaintext
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).ScaleHeight  0 . 5 , msoFalse, msoScaleFromTopLeft 


Спасибо большое!!!! В точку!!!
...
Рейтинг: 0 / 0
проблемы с получением Shape
    #34758766
Василий Теркин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)Например так:

Sub Macro4()
Dim x As String
x = Sheet1.Shapes.AddChart(xl3DLine, 200, 200, 100, 100).Name
Sheet1.Shapes(x).ScaleHeight 1.5, msoFalse
Sheet1.Shapes(x).ScaleWidth 1.5, msoFalse
End Sub[/src]
KL
[MVP - Microsoft Excel]

...а я получал нейм от activeChart (activeChart получена была от add), затем подставляя его в Shapes, т.е. Shapes(нейм_от_activeChart), в итоге имел ошибку... =)
...
Рейтинг: 0 / 0
проблемы с получением Shape
    #34758789
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Василий Теркин...а я получал нейм от activeChart (activeChart получена была от add), затем подставляя его в Shapes, т.е. Shapes(нейм_от_activeChart), в итоге имел ошибку... =)
Вновь созданный Chart - совсем не обязательно activeChart, особенно если активен совсем другой лист ;-)

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / проблемы с получением Shape
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]