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

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

Код: 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
28.08.2007, 16:13:57
    #34758748
Василий Теркин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с получением Shape
vbaproТолько что созданная диаграмма будет иметь последний индекс в коллекции. Т.е., например, на VBA можно изменить её размер так:
Код: plaintext
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).ScaleHeight  0 . 5 , msoFalse, msoScaleFromTopLeft 


Спасибо большое!!!! В точку!!!
...
Рейтинг: 0 / 0
28.08.2007, 16:21:00
    #34758766
Василий Теркин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с получением Shape
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
28.08.2007, 16:25:10
    #34758789
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблемы с получением Shape
Василий Теркин...а я получал нейм от activeChart (activeChart получена была от add), затем подставляя его в Shapes, т.е. Shapes(нейм_от_activeChart), в итоге имел ошибку... =)
Вновь созданный Chart - совсем не обязательно activeChart, особенно если активен совсем другой лист ;-)

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


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