我想打开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对象不支持此属性或方法。
答案 0 :(得分:1)
如果要更改整个文本框的字体颜色(即不仅仅是某些字符),请跳过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)
答案 1 :(得分:1)
试试这个,
Sub Button2()
Dim sh As Shape
Set sh = Sheets("Sheet1").Shapes("Textbox1")
sh.TextFrame.Characters.Font.Color = vbRed
End Sub
答案 2 :(得分:0)
我正在使用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
你应该使用更有意义的变量名等等!