VBA: Tìm Hdc trong bảng tính Excel hoặc UserForm

Dưới đây là hai ví dụ nhỏ về cách tìm Hdc trong bảng tính:

  • Bằng cách nhấp vào Sheet1, UserForm được hiển thị.
  • Đặt con trỏ trên UF, giữ nút chuột trái xuống và kéo chuột.
  • Bằng cách đóng phụ UF tiếp tục và vẽ một vòng cung trên trang tính.

Bắt đầu

  • Sách bài tập mới
  • Thêm tên UserForm = UserForm1

Dán đoạn mã sau vào sheet1:

 Chức năng khai báo riêng tư Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long,

ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long

Hàm khai báo riêng ArcTo Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long,

ByVal X3 As Long, ByVal Y3 As Long, ByVal X4 As Long, ByVal Y4 As Long) As Long

Worksheet riêng tư_SelectionChange (ByVal Target As Range)

Chiều dài B

'kích hoạt UC và vẽ lên nó (tìm HDC của bạn)

UserForm1.Show

'Tìm HDC của bạn trong bảng tính Excel

monhdc = 0

Làm trong khi myhdc = 0

myhdc = GetForegroundWindow ()

B = myhdc

myhdc = GetDC (myhdc)

Vòng lặp

'Vẽ trực tiếp trên Bảng tính

B = Arc (myhdc, 120, 500, 320, 400, 320, 400, 780, 500)

Kết thúc phụ

Trong mô đun người dùng

Dán đoạn mã sau:

 Loại riêng POINTAPI

X Như dài

Y Như Dài

Loại kết thúc

Hàm khai báo riêng tư DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Hàm khai báo riêng tư ChọnObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Chức năng khai báo riêng GetForegroundWindow Lib "user32" () miễn là

Hàm khai báo riêng tư TạoPen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long)

Hàm khai báo riêng Line Line Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Chức năng khai báo riêng MoveToEx Lib "gdi32" (ByVal hdc As Long, _

ByVal X As Long, ByVal Y As Long, lpPoint As Any) Miễn là

Chức năng khai báo riêng GetDC Lib "user32" (ByVal hwnd As Long) Miễn là

Hàm khai báo riêng SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Byte

Riêng monhdc Như Long

Dim Buff Như Boolean

Private Sub UserForm_MouseDown (Nút ByVal là số nguyên, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Buff = Đúng

Kết thúc phụ

Private Sub UserForm_MouseMove (Nút ByVal là số nguyên, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Làm trong khi myhdc = 0

myhdc = GetForegroundWindow ()

myhdc = GetDC (monhdc)

Vòng lặp

Nếu nút 1 thì thoát Sub

hRPen = TạoPen (PS_SOLID, 10, RGB (0, 255, 0))

XóaObject ChọnObject (myhdc, hRPen)

Nếu Buff thì

MoveToEx myhdc, X * 1.32, Y * 1.32, & H0

Buff = Sai

Kết thúc nếu

Dòng tới myhdc, X * 1.32, Y * 1.32

DoEvents

Kết thúc phụ

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên