Страница: 1 |
Страница: 1 |
Вопрос: рисование в VBA (в Excel)
Добавлено: 25.04.08 19:11
Автор вопроса: gladarfin
здраствуйте все:)
мне преподаватель дала задание: "Нарисовать НА ФОРМЕ (ну или объекте)! в VBA (в Excel) круги" т.е. при нажатии на кнопку должен рисоваться круг... это вообще возможно? (если да то как рисовать круг на чем-нибудь в VBA, но только не на Листе)...заранее спасибо:)
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
gvozd
Разработчик Offline Client
Вопросов: 164
Ответов: 1317
Web-сайт:
Профиль | | #1
Добавлено: 26.04.08 10:11
Circle.
Номер ответа: 2
Автор ответа:
gladarfin
Вопросов: 1
Ответов: 3
Профиль | | #2
Добавлено: 26.04.08 10:58
ммм...это в VB работает, а в VBA такой функции нету вроде...или можете целиком синтаксис написать??? (даже в справке ничего ни про circle ни про arc нет)
Номер ответа: 3
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #3
Добавлено: 26.04.08 11:03
Да Shape просто создать и все дела.
Номер ответа: 4
Автор ответа:
gladarfin
Вопросов: 1
Ответов: 3
Профиль | | #4
Добавлено: 26.04.08 11:10
напишите плиз как а то у меня знаний в этом языке
Номер ответа: 5
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #5
Добавлено: 26.04.08 13:11
Подключаете панель рисования, если её не видно, включаете макрорекордер и делаете руками окружность. Выключаете запись макроса и смотрите в проекте, что он там Вам написал. Там всё прямо глазами видно.
Номер ответа: 6
Автор ответа:
gladarfin
Вопросов: 1
Ответов: 3
Профиль | | #6
Добавлено: 26.04.08 13:49
мне надо чтобы оно на форме рисовало, а не на листе (ну или на объекте формы если такой существует)
Номер ответа: 7
Автор ответа:
Xiaofang
Вопросов: 0
Ответов: 5
Профиль | | #7
Добавлено: 10.05.08 21:53
У VBA-формы нет метода
1. Получите дескриптор формы:
(API-функция
Имя класса VBA-формы - ThunderDFrame
2. Получите контекст устройства для рисования:
(API-функция
3. Вызовите API-функцию Ellipse.
4. Задайте своему преподу вопрос:
Как добавить в заголовок VBA-формы кнопки "Свернуть", "Развернуть", и сделать её Sizable?
Номер ответа: 8
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #8
Добавлено: 10.05.08 22:16
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function Ellipse Lib "gdi32" (ByVal hDC As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Sub UserForm_Click()
Dim hWnd As Long, hDC As Long, hBrush As Long, hPen As Long
hWnd = FindWindow("ThunderDFrame", Me.Caption)
hDC = GetDC(hWnd)
hBrush = CreateSolidBrush(vbGreen)
hPen = CreatePen(1, 2, vbRed)
SelectObject hDC, hBrush
SelectObject hDC, hPen
Ellipse hDC, 0, 0, 100, 100
 eleteObject hBrush
 eleteObject hPen
End Sub
Но, имхо, тут как-то иначе надо Без АПИ