在 Excel 2007 中,我在工作表中插入了一个 ActiveX 标签。我右键单击它并查看属性并设法将 TextAlign 属性更改为 2 (frmTextAlignCenter)。
这会将标签标题的文本与标签的中心(水平)对齐,但文本仍位于标签的顶部。如何将标题的文本垂直居中,使其位于标签的中间?
我已经在 SO 中搜索了“垂直对齐”,但是对于如何为 Excel 标签的标题执行此操作却一无所获。
在 Excel 2007 中,我在工作表中插入了一个 ActiveX 标签。我右键单击它并查看属性并设法将 TextAlign 属性更改为 2 (frmTextAlignCenter)。
这会将标签标题的文本与标签的中心(水平)对齐,但文本仍位于标签的顶部。如何将标题的文本垂直居中,使其位于标签的中间?
我已经在 SO 中搜索了“垂直对齐”,但是对于如何为 Excel 标签的标题执行此操作却一无所获。
使用单个标签有一个技巧。添加一个 1x1 像素的透明 gif 图像(此处)并将 PictureAlignment 属性设置为 PicturePositionLeftCenter。
没有办法直接做到这一点。 不过,这篇文章有一个聪明的方法来完成它。制作 2 个框,内框围绕文本自动调整大小,并将内框放置在外框的中点。
您将不得不使用 2 个标签。
例如,称它们为 LabelBack、LabelFront。LabelFront 应设置为 Opaque 和 No-Border 使 LabelFront 的高度小于 LabelBack 的高度,或多或少地放在上面。
然后添加以下代码:
LabelFront.Top = (LabelBack.Top + (LabelBack.Height - LabelFront.Height) / 2) - 1
请注意,我减去1
以补偿1
LabelFront 中的额外像素。
我刚刚尝试了投票率最高的答案中概述的方法,并且效果很好。不过,要为该方法添加一些内容-例如,如果您有很多标签,我会执行以下操作:
财产 | 价值 |
---|---|
姓名 | GIF |
图片 | (设置为1x1透明gif图片[链接]) |
可见的 | False |
财产 | 价值 |
---|---|
标签 | "LabelAlignmentTheme" |
UserForm_Initialize
Private Sub UserForm_Initialize()
'Apply the fix in https://stackoverflow.com/questions/6859127/how-do-i-vertically-center-the-text-in-an-excel-labels-caption
'To all labels with the matching Tag
Dim ctrl As MSForms.control
For Each ctrl In Me.controls
If TypeOf ctrl Is MSForms.label And ctrl.Tag = "LabelAlignmentTheme" Then
Dim label As MSForms.label
Set label = ctrl
Set label.Picture = Me.GIF.Picture 'read the picture from the picture control
label.PicturePosition = fmPicturePositionLeftCenter
End If
Next
End Sub
我喜欢这种用法Tag
,感觉就像是一种 css 风格。通过将图像存储在表单中某处的共享隐藏图片中,它被嵌入到文件中。