Textbreite mit GetTextExtentPoint bestimmen
Schritt-für-Schritt-Anleitung
Um die Breite eines Strings in Excel mit der Funktion GetTextExtentPoint32
zu bestimmen, kannst du den folgenden VBA-Code verwenden:
Private Type SIZE
cx As Long
cy As Long
End Type
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32" Alias "GetTextExtentPointA" (ByVal hDC As Long, ByVal lpszStr As String, ByVal cchString As Long, lpSize As SIZE) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Public Function GetTxtPxLen(ByVal sTxt As String) As Long
Dim hWnd As Long
Dim hDC As Long
Dim sz As SIZE
hWnd = GetForegroundWindow()
If hWnd Then
hDC = GetDC(hWnd)
If hDC Then
GetTextExtentPoint32 hDC, sTxt, Len(sTxt), sz
ReleaseDC hWnd, hDC
GetTxtPxLen = sz.cx
End If
End If
End Function
Um die von GetTextExtentPoint32
verwendete Schriftart anzuzeigen oder zu ändern, musst du die Windows-Systemsteuerung aufrufen. Der Standardfont ist dort festgelegt und kann je nach Windows-Version unterschiedlich sein.
Häufige Fehler und Lösungen
Fehler 1: Falsche Schriftart wird verwendet
- Lösung: Stelle sicher, dass die Schriftart in der Systemsteuerung korrekt eingestellt ist. Die Funktion
GetTextExtentPoint32
verwendet die aktuell gewählte Schriftart.
Fehler 2: Funktion gibt unerwartete Ergebnisse zurück
- Lösung: Überprüfe, ob die Fenster, in denen du die Funktion aufrufst, korrekt sind. Verwende
GetForegroundWindow
, um sicherzustellen, dass du das richtige Fenster ansprichst.
Alternative Methoden
Wenn du nicht mit GetTextExtentPoint32
arbeiten möchtest, gibt es auch andere Methoden, um die Breite eines Textes in Excel zu bestimmen. Eine Möglichkeit ist die Verwendung der LEN
-Funktion in Kombination mit der Schriftgröße, die du in der Tabelle eingestellt hast. Allerdings ist dies weniger präzise als die Verwendung der API-Funktion.
Praktische Beispiele
Hier ist ein einfaches Beispiel, wie du die Breite eines Textes in Excel mit der Funktion GetTxtPxLen
nutzen kannst:
Sub Beispiel()
Dim txt As String
txt = "Hallo Welt"
MsgBox "Die Breite des Textes '" & txt & "' beträgt: " & GetTxtPxLen(txt) & " Pixel."
End Sub
Dieses Makro zeigt dir die Breite des Strings "Hallo Welt" in Pixeln an, basierend auf der aktuell eingestellten Schriftart.
Tipps für Profis
-
Schriftarten testen: Experimentiere mit verschiedenen Schriftarten und -größen in der Systemsteuerung, um ein besseres Verständnis für die Auswirkungen auf die Textbreite zu bekommen.
-
API-Dokumentation: Informiere dich über die Windows API zu GetTextExtentPoint32
, um weitere nützliche Funktionen zu entdecken, die du in deinen VBA-Projekten verwenden kannst.
FAQ: Häufige Fragen
1. Wie kann ich die aktuell verwendete Schriftart in Excel ermitteln?
Um die aktuell verwendete Schriftart zu ermitteln, musst du die Windows-Systemeinstellungen überprüfen. Excel selbst bietet keine direkte Möglichkeit, die Systemschriftart über VBA zu ändern oder anzuzeigen.
2. Gibt es eine Möglichkeit, GetTextExtentPoint32
in einer nicht-englischen Excel-Version zu verwenden?
Ja, die Funktion GetTextExtentPoint32
ist unabhängig von der Sprache der Excel-Version. Beachte jedoch, dass der Text, den du übergibst, in der entsprechenden Sprache sein sollte, um die richtige Breite zu ermitteln.