Вообще-то сам я программирую на С++ и не смогу тебе помочь с алгоритмами в VB :(((
А вот тебе наиболее полный код для рисования в VBA:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'код для модуля:
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public 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
Public Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Type LOGBRUSH
lbStyle As Long
lbColor As Long
lbHatch As Long
End Type
Public Declare Function CreateBrushIndirect Lib "gdi32" (lpLogBrush As LOGBRUSH) As Long
Public Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'код для формы:
Private Sub UserForm_Click()
Dim hwnd As Long, hdc As Long, oldBkMode As Long
Dim lbBrush As LOGBRUSH
Dim hBrush As Long, hOldBrush As Long
Dim hPen As Long, hOldPen As Long
Dim crOldTextColor As Long
hwnd = FindWindow(vbNullString, UserForm1.Caption)
hdc = GetDC(hwnd)
oldBkMode = SetBkMode(hdc, 1) 'TRANSPARENT = 1, OPAQUE = 2
lbBrush.lbStyle = 0 'BS_SOLID = 0
lbBrush.lbColor = RGB(255, 0, 0)
lbBrush.lbHatch = 3 'HS_BDIAGONAL = 3
hBrush = CreateBrushIndirect(lbBrush)
hOldBrush = SelectObject(hdc, hBrush)
hPen = CreatePen(0, 1, RGB(0, 0, 255)) 'PS_SOLID = 0, PS_DASH = 1
hOldPen = SelectObject(hdc, hPen)
crOldTextColor = SetTextColor(hdc, RGB(0, 150, 0))
''''''''''''''''''''''''
'Здесь рисуй с hdc (draw here with hdc):
Ellipse hdc, 50, 50, 150, 100
Ellipse hdc, 60, 90, 160, 140
TextOut hdc, 50, 25, "Hello!", 6
''''''''''''''''''''''''
SetBkMode hdc, oldBkMode
SelectObject hdc, hOldBrush
DeleteObject hBrush
SelectObject hdc, hOldPen
DeleteObject hPen
SetTextColor hdc, crOldTextColor
ReleaseDC hwnd, hdc
End Sub
Спасибо сказали: AkimovMB51