如何在Excel标签的标题中垂直居中显示文本?

pha*_*han 12 excel vba label caption vertical-alignment

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

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

我在SO中搜索了"垂直对齐",但是没有提到如何为Excel标签的标题执行此操作.

谢谢!

小智 14

有一个技巧可以使用单个标签来做到这一点。添加一个 1x1 像素的透明 gif 图像并将 PictureAlignment 属性设置为 PicturePositionLeftCenter。

  • 我不敢相信我是五年后第一个对此投赞成票的人。当天最好的发现。谢谢@Larv。 (2认同)

jon*_*sca 12

没有办法直接做到. 不过,这篇文章有一个聪明的方法来实现它.制作2个盒子,内部一个在文本周围自动调整,并将内盒定位在外盒的中点.

  • 好的,很高兴明确知道没有直接的方法可以做到这一点。我一直在寻找能让我改变垂直对齐的属性。感谢您的帮助 jonsca! (3认同)

Gre*_*edo 5

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

  1. 在用户窗体上的某个位置添加图片控件(任何地方都没关系)。将控件的属性更改为以下内容:
财产 价值
姓名 GIF
图片 (设置为1x1透明gif图片[链接]
可见的 False
  1. 现在,对于您想要接收特殊对齐方式的每个标签控件,更改标签属性:
财产 价值
标签 "LabelAlignmentTheme"
  1. 最后添加以下代码即可UserForm_Initialize
Private Sub UserForm_Initialize()
    'Apply the fix in /sf/ask/480138921/
    '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
Run Code Online (Sandbox Code Playgroud)

我喜欢这种用法Tag,感觉像css样式。显然,您可以跳过对标签的检查(删除 And 语句的后半部分)并对齐所有内容,但我认为这是一个更现实的场景,您只需要一些对齐。

通过将图像存储在表单中某处的共享隐藏图片中,它将嵌入到文件中。