在VBA按钮中将文本旋转90度

时间:2014-12-09 22:54:34

标签: excel forms vba excel-vba button

如何在VBA表格中按指定金额旋转按钮,文本框等内的文字?

1 个答案:

答案 0 :(得分:1)

你不能直接在VBA中这样做,但你仍然可以使用第三方BMP编辑器通过按钮实现类似的视觉效果(抱歉,文本框是不可能的)。

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

    enter image description here

    编辑1:另一个选项

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

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

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

    要在Windows系统上安装字体:

    1. 只需将文件解压缩到您想要的任何位置
    2. 即可
    3. 双击您想要的文件;您将看到字体系列的瀑布布局,以确保您安装正确的字体文件
    4. 点击顶部的“安装”按钮
    5. 重新启动计算机
    6. 然后,在TextBox1的属性菜单上,滚动到Font,单击 ... 并选择 Vertigo 作为字体系列。另外,将MultiLine设置为true。您需要确保文本框的宽度足够小,以便只有一个字符可以放在一条线上并且足够高以适合您的整个单词。

      结果如下所示:

      enter image description here

      我用这种字体意识到这些字母是向后的,所以我必须在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