wie zeichne ich einen Kreis/Rechteck/Linie in ein VBA Form.
Ich weiß das es dieses Werkzeug in VB gibt aber in VBA kann ich es nicht finden.
Wer weiß Abhilfe?
Gruß Mike
Private Sub UserForm_Click()
Dim hdc As Long
Dim position As POINTAPI
hdc = GetDC(hWnd)
If hWnd Then
MoveToEx hdc, 50, 50, position
LineTo hdc, Me.Width / 2, Me.Height - 50
End If
End Sub
Private Sub UserForm_Activate()
hWnd = GetForegroundWindow
End Sub
Um einen Kreis in einer VBA-Form zu zeichnen, kannst du die Windows API-Funktionen verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.
UserForm erstellen: Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject" und wähle Einfügen > UserForm.
Code einfügen: Doppelklicke auf die UserForm und füge den folgenden Code ein:
Private Declare Function GetForegroundWindow Lib "user32.dll" () As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function SetBkMode Lib "gdi32.dll" (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal crColor As Long) As Long
Private Declare Function Ellipse Lib "gdi32.dll" (ByVal hdc As Long, ByVal nLeftRect As Long, ByVal nTopRect As Long, ByVal nRightRect As Long, ByVal nBottomRect As Long) As Long
Private hWnd As Long
Private Sub UserForm_Activate()
hWnd = GetForegroundWindow
End Sub
Private Sub UserForm_Click()
Dim hdc As Long
hdc = GetDC(hWnd)
If hWnd Then
Ellipse hdc, 50, 50, 150, 150 ' Hier wird der Kreis gezeichnet
End If
End Sub
UserForm testen: Schließe den VBA-Editor und starte die UserForm.
Fehler: "Komponente nicht gefunden"
Lösung: Stelle sicher, dass du alle API-Deklarationen korrekt eingegeben hast.
Fehler: Der Kreis wird nicht angezeigt.
Lösung: Überprüfe, ob du das UserForm klickst, während es aktiv ist. Der Kreis wird nur beim Klick gezeichnet.
Eine einfachere Methode, um einen Kreis in Excel zu zeichnen, besteht darin, ein Bild-Steuerelement zu verwenden:
STRG + V ein.Dies ist eine schnelle Möglichkeit, um Formen in eine VBA-Form einzufügen, ohne den Code manuell zu schreiben.
Hier sind einige Beispiele für die Verwendung von Ellipse, um verschiedene Formen zu zeichnen:
Kreis zeichnen:
Ellipse hdc, 50, 50, 150, 150 ' Zeichnet einen Kreis
Ellipse zeichnen:
Ellipse hdc, 50, 100, 200, 150 ' Zeichnet eine Ellipse
Diese Beispiele kannst du in den UserForm_Click-Event einfügen, um verschiedene Formen zu testen.
Ellipse-Funktion, um die Größe und Position des Kreises anzupassen.SetBkMode-Funktion, um den Hintergrundmodus zu ändern, falls du Transparentzeilen zeichnen möchtest.1. Wie kann ich den Kreis farbig machen?
Um den Kreis farbig zu machen, musst du die SetTextColor-Funktion verwenden, um die Zeichenfarbe festzulegen, bevor du die Ellipse-Funktion aufrufst.
2. Kann ich auch andere Formen zeichnen?
Ja, du kannst auch Rechtecke oder Linien zeichnen, indem du die entsprechenden GDI-Funktionen wie Rectangle oder LineTo verwendest.