在VBAbutton中旋转文本90度

如何在VBA表单中按给定量旋转button,文本框等内的文本?

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

  1. 使用您想要的文本创build一个旋转的图像。 请务必使用相同的字体系列,样式和大小(默认为Tahoma,常规,8pt),并将图像的背景色设置为RGB(240,240,240)或hex#F0F0F0的系统调色板背景颜色。 还要确保图像的高度和宽度与要旋转的button的大小大致相同。
  2. 将旋转的图像保存为位图(.bmp)文件。
  3. CommandButton1属性框中,向下滚动到Picture属性,单击右侧的省略号,导航到并select旋转的图像。

最后结果

在这里输入图像说明

编辑1:另一个选项

接下来的部分主要是一个概念validation,并不是一个完整的解决scheme。 您将需要find正确的自定义.ttf或.otf字体文件,然后将其安装在要使用旋转文本的所有系统上。

根据你想要得到多么复杂,你可以创build一个等宽的字体,每个字符旋转90度,然后使用VBA代码在正确的位置插入/删除字符。

我从http://www.1001fonts.com/vertigo-font.html使用了Vertigo ,这是我能find的唯一的TrueType字体,而不需要付出努力创造我自己的或付出代价。 我用这个字体看到的一个大问题是它不是等宽的,每个字符的高度(比如下划线_)是不一致的,所以你不能正确地添加空格或者下划线(我认识到的一个主要缺点是你将需要find/创build你自己的字体)。

在Windows系统上安装字体:

  1. 只需将文件解压缩到任意位置即可
  2. 双击你想要的文件; 你会看到字体系列的瀑布布局,以确保你正在安装正确的字体文件
  3. 点击顶部的安装button
  4. 重启你的电脑

然后,在TextBox1的属性菜单上,滚动到字体,单击...并selectVertigo作为字体系列。 另外,将MultiLine设置为true。 您将需要确保文本框的宽度足够小,以至于只有一个字符可以放在一条线上,并且足够高以适合您的整个单词。

结果看起来像这样:

在这里输入图像说明

我意识到这个字体是字母倒过来的,所以我不得不在KeyDownKeyPress事件上添加一些基本的代码来正确地处理基本的input(忽略blinker的位置,只处理最近的字符结束)

 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