如何在VBA表格中按指定金额旋转按钮,文本框等内的文字?
答案 0 :(得分:1)
你不能直接在VBA中这样做,但你仍然可以使用第三方BMP编辑器通过按钮实现类似的视觉效果(抱歉,文本框是不可能的)。
下一部分主要是概念验证,绝不是一个完整的解决方案。您需要找到正确的自定义.ttf或.otf字体文件,然后将其安装在要使用旋转文本的所有系统上。
根据您想要获得的复杂程度,您实际上可以创建一个等宽字体,其中每个字符旋转90°,然后使用VBA代码在适当的位置插入/删除字符。
我使用了来自http://www.1001fonts.com/vertigo-font.html的 Vertigo ,这是我能找到的唯一TrueType字体,无需努力创建我自己的或付费。我用这种字体看到的一个大问题是它不是等宽的,并且每个字符的高度(比如说下划线_)不一致,所以你不能正确地添加空格或下划线(这是我意识到的一个主要缺点,所以你需要找到/创建自己的字体)。
要在Windows系统上安装字体:
然后,在TextBox1的属性菜单上,滚动到Font,单击 ... 并选择 Vertigo 作为字体系列。另外,将MultiLine设置为true。您需要确保文本框的宽度足够小,以便只有一个字符可以放在一条线上并且足够高以适合您的整个单词。
结果如下所示:
我用这种字体意识到这些字母是向后的,所以我必须在KeyDown
和KeyPress
事件上添加一些基本代码来正确处理基本类型(忽略闪烁字符串的位置)在和只处理最后一个角色)
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