更改文本框的字体颜色

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

到目前为止我设法做到的唯一方法就是通过录制macros。

它给了我

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对象不支持这个属性或方法。

如果要更改整个文本框的字体颜色(即不只是某些字符),则跳过Characters方法。 你也不应该依赖。select, 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 

我正在使用Excel 2000(长篇故事),我有条件地设置“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 

你应该使用更有意义的variables名称等!