VBA: Menemukan Hdc di lembar kerja Excel atau UserForm

Berikut adalah dua contoh kecil tentang cara menemukan Hdc di lembar kerja:

  • Dengan mengklik pada Sheet1, UserForm ditampilkan.
  • Letakkan pointer di UF, tahan tombol kiri mouse ke bawah dan seret mouse.
  • Dengan menutup sub UF berlanjut dan menggambar busur pada lembar.

Mulai

  • Buku kerja baru
  • Tambahkan nama UserForm = UserForm1

Rekatkan kode berikut di sheet1:

 Fungsi Deklarasi Pribadi 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

Private Declare Function 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

Sub lembar kerja pribadi_SelectionChange (Rentang Target Sebagai ByVal)

Dim B As Long

'aktifkan UC dan menggambar di atasnya (menemukan HDC Anda)

UserForm1.Show

'Menemukan HDC Anda di lembar kerja Excel

monhdc = 0

Do While myhdc = 0

myhdc = GetForegroundWindow ()

B = myhdc

myhdc = GetDC (myhdc)

Loop

'Gambar langsung di Lembar Kerja

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

End Sub

Dalam modul userform

Rekatkan kode berikut:

 Jenis Pribadi POINTAPI

X As Long

Y As Long

Jenis Akhir

Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Fungsi Deklarasi Pribadi SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Fungsi Pernyataan Pribadi GetForegroundWindow Lib "user32" () As Long

Private Declare Function CreatePen Lib "gdi32" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long

Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Fungsi Deklarasi Pribadi MoveToEx Lib "gdi32" (ByVal hdc As Long, _

ByVal X As Long, ByVal Y As Long, lpPoint As Any) As Long

Fungsi Deklarasi Pribadi GetDC Lib "user32" (ByVal hwnd As Long) As Long

Fungsi Deklarasi Pribadi SetPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal crColor As Long) As Byte

Monhdc pribadi As Long

Dim Buff As Boolean

Private Sub UserForm_MouseDown (Tombol ByVal Sebagai Integer, ByVal Shift Sebagai Integer, ByVal X As Single, ByVal Y As Single)

Buff = Benar

End Sub

Private Sub UserForm_MouseMove (Tombol ByVal Sebagai Integer, ByVal Shift Sebagai Integer, ByVal X As Single, ByVal Y As Single)

Do While myhdc = 0

myhdc = GetForegroundWindow ()

myhdc = GetDC (monhdc)

Loop

Jika Tombol 1 Kemudian Keluar Sub

hRPen = CreatePen (PS_ KONSOLIDASI, 10, RGB (0, 255, 0))

DeleteObject SelectObject (myhdc, hRPen)

Jika Buff Lalu

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

Buff = Salah

Berakhir jika

LineTo myhdc, X * 1, 32, Y * 1, 32

DoEvents

End Sub

Artikel Sebelumnya Artikel Berikutnya

Tips