Option ExplicitPrivate Sub LabelText() Dim mX As Long, mY As Long, mW As Long, mH As Long, mNH As Long, mTH As Long, mLong As Long mX = Label1.Left: mY = Label1.Top: mW = Label1.Width: mH = Label1.Height Label1.AutoSize = True Label1.AutoSize = False mNH = Label1.Height mTH = (mH - mNH) \ 2 \ mNH Label1.Left = mX: Label1.Top = mY: Label1.Width = mW: Label1.Height = mH For mLong = 0 To mTH - 1 Label1.Caption = vbCrLf & Label1.Caption Next End SubPrivate Sub Form_Load() LabelText End Sub有点误差,不过问题不是很大
我回了3次,不能继续回。我上面的做法有点蠢,应该用TextHeight Private Sub Form_Load() Label1.Alignment = 2: Label1.Appearance = 0 Dim mH As Long, mF As Long mH = (Label1.Height - TextHeight(Label1.Caption)) \ 2 \ TextHeight(Label1.Caption) For mF = 0 To mH - 1 Label1.Caption = vbCrLf & Label1.Caption Next End Sub
Label1.Caption = "a" & vbCrLf & "b" & vbCrLf & "c"
End Sub
好了,问题解决了
不过确实没法居中啊
Label1.Alignment = 2
Label1.Appearance = 0
Label1.Caption = "现" & vbCrLf & "在" & vbCrLf & "居" & vbCrLf & "中" & vbCrLf & "了"
End Sub
先Label1.Alignment = 2
然后计算字体的高度来设置LABEL的高度,或以此计算在文本的前面应该加几个VBCRLF
Dim mX As Long, mY As Long, mW As Long, mH As Long, mNH As Long, mTH As Long, mLong As Long
mX = Label1.Left: mY = Label1.Top: mW = Label1.Width: mH = Label1.Height
Label1.AutoSize = True
Label1.AutoSize = False
mNH = Label1.Height
mTH = (mH - mNH) \ 2 \ mNH
Label1.Left = mX: Label1.Top = mY: Label1.Width = mW: Label1.Height = mH
For mLong = 0 To mTH - 1
Label1.Caption = vbCrLf & Label1.Caption
Next
End SubPrivate Sub Form_Load()
LabelText
End Sub有点误差,不过问题不是很大
不过也奇怪,label怎么连个垂直居中也不支持呢????????????????????
Private Sub Form_Load()
Label1.Alignment = 2: Label1.Appearance = 0
Dim mH As Long, mF As Long
mH = (Label1.Height - TextHeight(Label1.Caption)) \ 2 \ TextHeight(Label1.Caption)
For mF = 0 To mH - 1
Label1.Caption = vbCrLf & Label1.Caption
Next
End Sub
alignment=2 也是可以的