【问题标题】:Rotate text 90 degrees in a VBA button [closed]在VBA按钮中将文本旋转90度[关闭]
【发布时间】:2015-02-08 00:32:30
【问题描述】:

如何在VBA 表单内按给定数量旋转按钮、文本框等内的文本?

【问题讨论】:

  • 没有内置方式。您可以做的最好的事情是创建您的按钮并创建一个窄标签 (workwrap=True) 并将该标签分层到您的按钮上。
  • 用户表单或工作表? (“表单”不是我认识的术语)

标签: forms vba excel button


【解决方案1】:

您不能直接在 VBA 中执行此操作,但您仍然可以使用 3rd 方 BMP 编辑器通过按钮实现类似的视觉效果(抱歉,文本框是不可能的)。

  1. 使用您想要的给定文本创建旋转图像。确保使用相同的字体系列、样式和大小(Tahoma,常规,默认为 8pt)并将图像的背景颜色设置为系统调色板背景颜色,即 RGB(240,240,240) 或十六进制 #F0F0F0。还要确保图片的高度和宽度与您要旋转的按钮的大小大致相同。
  2. 将旋转后的图像另存为位图 (.bmp) 文件。
  3. CommandButton1Properties 框中,向下滚动到 Picture 属性,单击右侧的省略号,导航到并选择旋转后的图像。

最终结果

编辑 1:另一个选项

下一部分主要是概念验证,绝不是完整的解决方案。您需要找到正确的自定义 .ttf 或 .otf 字体文件,然后将其安装在您要使用旋转文本的所有系统上。

根据您想要获得的复杂程度,您实际上可以创建一个等宽字体,其中每个字符旋转 90°,然后使用 VBA 代码在适当的位置插入/删除字符。

我使用了来自http://www.1001fonts.com/vertigo-font.htmlVertigo,这是我能找到的唯一 TrueType 字体,无需努力创建自己的字体或付费。我看到这种字体的一个大问题是它不是等宽字体,并且每个字符的高度(例如,下划线 _)不一致,因此您无法正确添加空格或下划线(我意识到这是一个主要缺点,所以您将需要找到/创建自己的字体)。

在 Windows 系统上安装字体:

  1. 只需将文件解压缩到您想要的任何位置
  2. 双击你想要的文件;您将看到字体系列的瀑布布局,以确保您安装了正确的字体文件
  3. 点击顶部的安装按钮
  4. 重新启动计算机

然后,在 TextBox1 的属性菜单上,滚动到字体,单击 ... 并选择 Vertigo 作为字体系列。此外,将 MultiLine 设置为 true。您需要确保文本框的宽度足够小,一行中只能容纳 1 个字符,并且足够高以容纳整个单词。

结果如下所示:

我意识到使用这种字体,字母是倒着写的,所以我不得不在 KeyDownKeyPress 事件上添加一些基本代码来正确处理基本输入(忽略闪光灯所在的位置,只处理最后一个字符)

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Me.TextBox1.Value = Chr(KeyAscii) & Me.TextBox1.Value
    KeyAscii = False
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Then
        Me.TextBox1.Value = Mid(Me.TextBox1.Value, 2, Len(Me.TextBox1.Value))
        KeyCode = False
    End If
End Sub

【讨论】:

  • 真棒干杯迈克尔
猜你喜欢
  • 1970-01-01
  • 2023-04-09
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-04-25
  • 2016-08-17
  • 2011-03-22
  • 1970-01-01
相关资源
最近更新 更多