19

在 Excel 2007 中,我在工作表中插入了一个 ActiveX 标签。我右键单击它并查看属性并设法将 TextAlign 属性更改为 2 (frmTextAlignCenter)。

这会将标签标题的文本与标签的中心(水平)对齐,但文本仍位于标签的顶部。如何将标题的文本垂直居中,使其位于标签的中间?

我已经在 SO 中搜索了“垂直对齐”,但是对于如何为 Excel 标签的标题执行此操作却一无所获。

4

4 回答 4

20

使用单个标签有一个技巧。添加一个 1x1 像素的透明 gif 图像(此处)并将 PictureAlignment 属性设置为 PicturePositionLeftCenter。

于 2014-09-30T23:11:57.737 回答
19

没有办法直接做到这一点。 不过,这篇文章有一个聪明的方法来完成它。制作 2 个框,内框围绕文本自动调整大小,并将内框放置在外框的中点。

于 2011-07-28T12:49:40.047 回答
3

您将不得不使用 2 个标签。

例如,称它们为 LabelBack、LabelFront。LabelFront 应设置为 Opaque 和 No-Border 使 LabelFront 的高度小于 LabelBack 的高度,或多或少地放在上面。

然后添加以下代码:

LabelFront.Top = (LabelBack.Top + (LabelBack.Height - LabelFront.Height) / 2) - 1

请注意,我减去1以补偿1LabelFront 中的额外像素。

于 2016-06-18T23:08:08.143 回答
1

我刚刚尝试了投票率最高的答案中概述的方法,并且效果很好。不过,要为该方法添加一些内容-例如,如果您有很多标签,我会执行以下操作:

  1. 在用户窗体的某处添加图片控件(任何地方都无所谓)。将控件属性更改为以下
财产 价值
姓名 GIF
图片 (设置为1x1透明gif图片[链接]
可见的 False
  1. 现在,对于您想要接收特殊对齐方式的每个 Label 控件,更改标签属性:
财产 价值
标签 "LabelAlignmentTheme"
  1. 最后将以下代码添加到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 风格。通过将图像存储在表单中某处的共享隐藏图片中,它被嵌入到文件中。

于 2022-02-12T18:20:04.903 回答