Pixel-Breite eines Proportional-Text

28/05/2008 - 08:44 von Peter Schleif | Report spam
Hallo beste NG der Welt.


Ist es in Excel 2000 und 2002 möglich, die Pixel-Breite eines Textes
der Message-Box zu berechnen?

Es ist ja wohl eine Proportionalschrift. Die Standard-System-Schrift?
Bei mir (WinXP) wird anscheinend Tahoma verwendet. Ich habe in der API
eine Funktion gefunden (GetTextExtentPoint), die eigentlich genau das
machen soll. Aber die Rückgabewerte passen nicht.

40 iiiiiiiiii
120 MMMMMMMMMM

Tatsàchlich sind es aber 20px / 80px - jeweils inklusive Zwischenraum.
Es hilft also auch nicht, die Werte mit einem konstanten Faktor zu
multiplizieren, weil schon das Verhàltnis von M und i nicht stimmt.

Unten der verwendete Code. Habt ihr eine Idee?

Peter


Option Explicit

Type SIZE
cx As Long
cy As Long
End Type

Declare Function GetTextExtentPoint Lib "gdi32" _
Alias "GetTextExtentPointA" ( _
ByVal hdc As Long, _
ByVal lpsz As String, _
ByVal cbString As Long, _
lpSize As SIZE) As Long

Private Declare Function GetDC Lib "user32" ( _
ByVal hwnd As Long) As Long

Private Declare Function ReleaseDC Lib "user32" ( _
ByVal hwnd As Long, _
ByVal hdc As Long) As Long


Sub test()
Debug.Print text_width("iiiiiiiiii")
Debug.Print text_width("MMMMMMMMMM")
End Sub


Function text_width(ByVal str As String) As String
Dim dc As Long
Dim rect As SIZE

dc = GetDC(0)

GetTextExtentPoint dc, str, Len(str), rect

text_width = Right(" " & rect.cx, 4) & " " & str

ReleaseDC 0, dc
End Function
 

Lesen sie die antworten

#1 thomas.ramel
28/05/2008 - 09:49 | Warnen spam
Grüezi Peter

On 28 Mai, 08:44, Peter Schleif wrote:

Hallo beste NG der Welt.



:-)

Ist es in Excel 2000 und 2002 möglich, die Pixel-Breite eines Textes
der Message-Box zu berechnen?

Es ist ja wohl eine Proportionalschrift. Die Standard-System-Schrift?
Bei mir (WinXP) wird anscheinend Tahoma verwendet.



Hmmm, ich vermute mal, dass das noch ein wenig komplexer ist

Es hàngt IMO auch von der in Excel verwendeten Standard-Schriftart ab.

Hier zwei KB-Artikel die sich zwar mit den Spaltenbreiten
beschàftigen, dir aber vielleicht dennoch weitere helfen könnten:

http://support.microsoft.com/?scid=...4123&x&y
http://support.microsoft.com/?scid=...3591&x&y


PS:
Wozu willst Du das Ganze denn verwenden * neugierig frag*?

Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -

Ähnliche fragen