2015-03-10 9 views
3

Я хочу открыть файл 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 Объект не поддерживает это свойство или метод.

ответ

2

Если вы хотите изменить цвет шрифта всего текстового поля (то есть не только определенные символы), пропустите метод 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) 
+0

Добро пожаловать в Переполнение стека. Пожалуйста, взгляните на это: [Как принимается ответ?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

2
Sub Button2() 
    Dim sh As Shape 
    Set sh = Sheets("Sheet1").Shapes("Textbox1") 
    sh.TextFrame.Characters.Font.Color = vbRed 
End Sub 
0

Я использую Excel 2000 (длинная история), и я условно установить цвет текстового поля «M_in_out» в «Sheet7» с нижеследующим.

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 

Возможно, вы должны использовать более значимые имена переменных и т. Д. !.

Смежные вопросы