VBA: Nalezení HDD v listu aplikace Excel nebo UserForm

Zde jsou dva malé příklady, jak najít HDD v pracovním listu:

  • Kliknutím na List1 se zobrazí UserForm.
  • Umístěte ukazatel na UF, podržte levé tlačítko myši a táhněte myší.
  • Uzavřením UF sub pokračuje a nakreslí na arch oblouk.

Začínáme

  • Nový sešit
  • Přidat název UserForm = UserForm1

Vložte následující kód do listu1:

 Funkce soukromého deklaru Arc Lib "gdi32" (ByVal hdc As Long, ByVal X1 jako dlouhý, ByVal Y1 jako dlouhý, ByVal X2 jako dlouhý, ByVal Y2 jako dlouhý,

ByVal X3 jako dlouhý, ByVal Y3 jako dlouhý, ByVal X4 jako dlouhý, ByVal Y4 jako dlouhý

Funkce soukromého deklarovat ArcTo Lib "gdi32" (ByVal hdc jako dlouhý, ByVal X1 jako dlouhý, ByVal Y1 jako dlouhý, ByVal X2 jako dlouhý, ByVal Y2 jako dlouhý,

ByVal X3 jako dlouhý, ByVal Y3 jako dlouhý, ByVal X4 jako dlouhý, ByVal Y4 jako dlouhý

Private Sub Worksheet_SelectionChange (Cíl cíl ByVal jako rozsah)

Dim B Jako dlouhý

'aktivovat UC a čerpat z něj (hledání HDC)

UserForm1.Show

'Hledání HDC v listu aplikace Excel

monhdc = 0

Do Zatímco myhdc = 0

myhdc = GetForegroundWindow ()

B = myhdc

myhdc = GetDC (myhdc)

Smyčka

'Nakreslete přímo na listu

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

End Sub

V modulu userform

Vložte následující kód:

 Soukromý typ POINTAPI

X Tak dlouho

Y jako dlouhé

Typ konce

Funkce Private Declare DeleteObject Lib "gdi32" (ByVal hObject jako dlouhý) Jako dlouhý

Funkce Private Declare SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject jako dlouhý)

Funkce soukromého deklarovat GetForegroundWindow Lib "user32" () Jako dlouhý

Funkce soukromého deklarovat CreatePen Lib "gdi32" (ByVal nPenStyle jako dlouhý, ByVal nWidth jako dlouhý, ByVal crColor jako dlouhý)

Soukromé deklarovat funkce LineTo Lib "gdi32" (ByVal hdc jako dlouhý, ByVal X jako dlouhý, ByVal Y jako dlouhý) jako dlouhý

Funkce Private Declare MoveToEx Lib "gdi32" (ByVal hdc jako dlouhý, _

ByVal X jako dlouhý, ByVal Y jako dlouhý, lpPoint jako libovolný) Jako dlouhý

Funkce soukromého deklarovat GetDC Lib "user32" (ByVal hwnd as Long) As Long

Souprava funkcí soukromého deklaruPixelV Lib "gdi32" (ByVal hdc As Long, ByVal X jako dlouhý, ByVal Y jako dlouhý, ByVal crColor tak dlouhý) jako Byte

Soukromý monhdc As Long

Dim Buff Jako booleovský

Private Sub UserForm_MouseDown (Tlačítko ByVal jako celé číslo, ByVal Shift jako celé číslo, ByVal X jako jeden, ByVal Y jako jeden)

Buff = True

End Sub

Soukromé Sub UserForm_MouseMove (Tlačítko ByVal jako celé číslo, ByVal Shift jako celé číslo, ByVal X jako jeden, ByVal Y jako jeden)

Do Zatímco myhdc = 0

myhdc = GetForegroundWindow ()

myhdc = GetDC (monhdc)

Smyčka

Pokud tlačítko 1 pak Exit Sub

hRPen = CreatePen (PS_SOLID, 10, RGB (0, 255, 0))

DeleteObject SelectObject (myhdc, hRPen)

Pokud Buff pak

MoveToEx myhdc, X * 1, 32, Y * 1, 32, & H0

Buff = False

Konec Pokud

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

DoEvents

End Sub

Předchozí Článek Následující Článek

Nejlepší Tipy