Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: рисование в VBA (в Excel) Добавлено: 25.04.08 19:11  

Автор вопроса:  gladarfin
здраствуйте все:)
мне преподаватель дала задание: "Нарисовать НА ФОРМЕ (ну или объекте)! в VBA (в Excel) круги" т.е. при нажатии на кнопку должен рисоваться круг... это вообще возможно? (если да то как рисовать круг на чем-нибудь в VBA, но только не на Листе)...заранее спасибо:)

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 gvozd



Разработчик Offline Client

Вопросов: 164
Ответов: 1317


 Web-сайт: www.gvozdsoft.com
 Профиль | | #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-сайт: www.adsemenov.ru
 Профиль | | #3
Добавлено: 26.04.08 11:03
    Да Shape просто создать и все дела. :)

Ответить

Номер ответа: 4
Автор ответа:
 gladarfin



Вопросов: 1
Ответов: 3
 Профиль | | #4 Добавлено: 26.04.08 11:10
напишите плиз как:) а то у меня знаний в этом языке:(

Ответить

Номер ответа: 5
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #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-формы нет метода
Circle
.

1. Получите дескриптор формы:
(API-функция
FindWindow
или
FindWindowEx
)

Имя класса VBA-формы - ThunderDFrame

2. Получите контекст устройства для рисования:
(API-функция
GetDC
)

3. Вызовите API-функцию Ellipse.

4. Задайте своему преподу вопрос:
Как добавить в заголовок VBA-формы кнопки "Свернуть", "Развернуть", и сделать её Sizable?

Ответить

Номер ответа: 8
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #8
Добавлено: 10.05.08 22:16
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
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
    ;DeleteObject hBrush
    ;DeleteObject hPen
End Sub

Но, имхо, тут как-то иначе надо =) Без АПИ =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам