Vba 更改文本框的字体颜色

Vba 更改文本框的字体颜色,vba,excel,Vba,Excel,我想打开一个Excel文件,转到文件中的第一页,并将textbox1的文本颜色更改为红色 到目前为止,我唯一能做到这一点的方法就是录制宏 它给了我 Workbooks.Open (fPath & sName) Sheets(1).Select ActiveSheet.Shapes.Range(Array("TextBox1")).Select With Selection.ShapeRange(1).TextFrame2.TextRange.Char

我想打开一个Excel文件,转到文件中的第一页,并将textbox1的文本颜色更改为红色

到目前为止,我唯一能做到这一点的方法就是录制宏

它给了我

Workbooks.Open (fPath & sName)

            Sheets(1).Select

  ActiveSheet.Shapes.Range(Array("TextBox1")).Select

  With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 262).Font.Fill
    .Visible = msoTrue
    .ForeColor.RGB = RGB(255, 0, 0)
    .Transparency = 0
    .Solid
    End With
那很好;但是,文本的长度是可变的,因此如果它小于上面的262个字符,则代码会出错

我试着介绍

CharCount = Len(textbox1.Text)
然而,我得到错误424对象所需

我最初试过

Sheets(1).Select
ActiveSheet.TextBox1.ForeColor = RGB(255, 0, 0)

但出现错误438对象不支持此属性或方法。

如果要更改整个文本框的字体颜色(即不仅仅是某些字符),请跳过
字符方法。你也不应该依赖于
。选择
ActiveSheet
等等。而是设置适当的引用

这项工作:

Dim wb As Workbook
Dim ws As Worksheet
Dim s As Shape

Set wb = Workbooks.Open(fPath & sName)
Set ws = wb.Sheets(1)
Set s = ws.Shapes("TextBox 1")

s.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(255, 0, 0)
试试这个

Sub Button2()
    Dim sh As Shape
    Set sh = Sheets("Sheet1").Shapes("Textbox1")
    sh.TextFrame.Characters.Font.Color = vbRed
End Sub
我使用的是Excel2000(长话短说),我在“Sheet7”中有条件地设置文本框“m_in_out”的颜色,如下所示

Private Sub M_in_out_LostFocus()
Dim sh As Sheet7
Set sh = Sheet7

vx = CInt(M_in_out.Value)
If vx > 0 Then
  sh.M_in_out.ForeColor = vbBlack
Else
  sh.M_in_out.ForeColor = vbRed
End If

sh.Cells(23, 6).Value = sh.Cells(23, 6).Value + vx
End Sub
您可能应该使用更有意义的变量名等