簡體   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