更改文本框的字体颜色

7

我想打开一个Excel文件,进入文件的第一个工作表,并将文本框1的文本颜色更改为红色。

到目前为止,我唯一成功的方法是通过录制宏来实现。

这样做会给我带来:

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

3个回答

2

如果您想更改整个文本框的字体颜色(即不仅限于某些字符),则跳过Characters方法。此外,您不应依赖于.SelectActiveSheet等方法,而应正确设置引用。

这样做是有效的:

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
尝试这个,
Sub Button2()
    Dim sh As Shape
    Set sh = Sheets("Sheet1").Shapes("Textbox1")
    sh.TextFrame.Characters.Font.Color = vbRed
End Sub

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

你应该使用更有意义的变量名等!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接