或参考下面程序:
将 Width 换为 Height
问题: 如何得到一个某种字体的字符串是多少个象素的长度? 不是len(string)!
解答: 编成函数,借用一个 PictureBox
'Object: Form1、Picture1、Command1
Option Explicit
Public Function GetTextWidth(TextX As String, FontX As stdole.StdFont, PictureX As VB.PictureBox, Optional FromScale As VBRUN.ScaleModeConstants = vbHimetric, Optional ToScale As VBRUN.ScaleModeConstants = vbPixels) As Double
'保留原值,Clone 该字体为今后恢复,也可没必要
Dim Temp As New stdole.StdFont
Temp.Bold = FontX.Bold
Temp.Charset = FontX.Italic
Temp.Name = FontX.Name
Temp.Size = FontX.Size
Temp.Strikethrough = FontX.Strikethrough
Temp.Underline = FontX.Underline
Temp.Weight = FontX.Weight
Set PictureX.Font = FontX
GetTextWidth = PictureX.ScaleX(PictureX.TextWidth(TextX), FromScale, ToScale)
'恢复
Set PictureX.Font = Temp
End Function
'测试
Private Sub Command1_Click()
'VBA.MsgBox Me.ScaleX(Me.TextWidth("aa"), vbHimetric, vbPixels)
'VBA.MsgBox GetTextWidthPixels("aa", Me.Font, Picture1)
Dim x As New stdole.StdFont
x.Size = 12
VBA.MsgBox GetTextWidth("a阿", x, Picture1)
End Sub