繁体   English   中英

VBA 文本框字体颜色

[英]VBA text box font color

我正在帮助更新我的工作中的 Excel 模板,我需要一些帮助。 我正在尝试将文本框中的文本格式化为红色并删除边框。 我不确定如何将该属性添加到我的代码中。 我不太擅长编码。 我能够通过剖析我发现的其他代码将以下内容放在一起。

ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 2525, 1800, 103, 24).TextFrame.Characters.Text = Format(Cells(9, 2), "mmmm d, yyyy")

我最终将替换文本框代码中的绝对位置值,但我希望它在我开始进行效率调整之前工作。 感谢您的帮助!

EDIT1:如果我使用第 1 行和第 2 行或第 1 行和第 3 行,则以下代码有效。我不确定为什么不能同时使用两者。

ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 2525, 1800, 103, 24) _
.TextFrame.Characters.Font.Color = vbRed _
.TextFrame.Characters.Text = Format(Cells(9, 2), "mmmm d, yyyy")

@ LL 你用 shape.addtextbox 做的方式是这样的:

With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 146#, 68#, _
        301#, 181#).TextFrame
        .Characters.Font.Color = RGB(255, 0, 0)
        .Characters.Text = "Whatever your string is"
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
 End With

在此处输入图片说明

如果我继续在文本框中输入,那么其余部分将用红色包裹起来,以及第一个分配中的任何内容,屏幕截图中的命令按钮执行上面的代码只是为了玩。

如果您要继续使用代码在文本框中添加和减去文本,最好为形状命名。 然后,您可以抓取其中的字符串并添加到其中。 . 下面的代码显示了如何使用 VBA 命名和处理文本框,添加文本等等。 . 您现在也可以更改文本框中某些文本的颜色,这很酷,但也许是另一个主题?

Option Explicit

Private Sub CommandButton1_Click()

Dim tbShape As Shape
Dim WKS As Worksheet
Dim newText As String
Dim previousText As String
Dim textRange As Range

Set WKS = ThisWorkbook.ActiveSheet
Set textRange = WKS.Range("C1") 'define where to grab the new text
newText = CStr(textRange) 'convert what is in the cell to string

With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 146#, 68#, _
            301#, 181#)
            .Name = "myTextBox"
End With

Set tbShape = ActiveSheet.Shapes("myTextBox")

With tbShape.TextFrame
    .Characters.Font.Color = RGB(255, 0, 0)
    .Characters.Text = "This is the intial text of the textbox 11111111 222222 "
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With

'grab the previous textbox string
previousText = tbShape.TextFrame.Characters.Text
'add your new text to what was there before
tbShape.TextFrame.Characters.Text = previousText & newText

End Sub

所以我希望这会有所帮助。 如果您有开发人员选项卡,最简单的方法是添加一个 ActiveX 文本框(我认为您将无法使用 .characters)但您可以指定文本框名称和许多属性:文本字体、大小、颜色( .forecolor) 在属性选项卡中或在 vba 中的文本框以及名称(容易使所有一种颜色,很难以这种方式仅将文本框中的选定文本更改为 VBA 中的某种颜色),但对于整个盒子? 简单。

如果您这样做并希望在 vba 中获取文本框的内容,假设您在代码中将注释字符串变暗,并将您的 activeX 文本框命名为 TextBox1:

'get comments
comments = msrSheet.OLEObjects("TextBox1").Object.Text

在此处输入图片说明

据我所知,您必须使用第一种插入文本框的方式(您当前使用的方式和答案中的第一种方式)仅将选定的文本更改为新颜色。 想看看它的实际效果吗? 将此代码添加到上面的代码下方但就在 End Sub 之前,现在之前的代码是红色的,如果找到,您在代码块中定义的字符串将为蓝色,在这种情况下,我懒惰地将其分配给 newText

'grab the previous textbox string
previousText = tbShape.TextFrame.Characters.Text
'Change the color of the new string in the textbox to blue
Dim blueText As String
blueText = newText
With tbShape.TextFrame
    .Characters(InStr(previousText, blueText), Len(blueText)).Font.Color = RGB(0, 0, 255)
End With

在此处输入图片说明

我真诚地希望这可以帮助您成为一名 textBox 绝地! 干杯 - WWC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM