2016-08-03 4 views
0

Я пытаюсь автоматизировать форматирование электронной таблицы, и я застрял на форматировании части строки в ячейке. Мне нужно изменить цвет части строки (начиная с начала строки) в зависимости от длины ячейки рядом с ней.Excel VBA - форматирование частичной строки в ячейке с использованием длины строки в другой ячейке

Я думаю, что я понял, часть решения, но я не уверен, что на один бит:

Sub Macro1() 
Range("C4").Select 
With ActiveCell.Characters(Start:=1, Length:=??).font 
.Color = -16776961 
End With 
End Sub 

Я хочу ?? (в данном случае D4)

Я долгое время не использовал VBA, поэтому я даже не уверен, что нахожусь на правильном пути.

Если это имеет значение, я хотел бы иметь возможность применять форматирование к диапазону ячеек (что-то вроде C4: C30), но на данный момент это вне меня.

Спасибо за любую помощь

+0

Попробуйте использовать 'Длина: = Len (ActiveCell.Offset (0,1))' – BruceWayne

ответ

0

Вот как вы можете перебрать Range («C4: C30») и изменить характер форматирования на основе длины текста в диапазоне («D4: D30»).

Sub Example() 
    Dim r As Range 
    Dim length As Integer 

    For Each r In Range("C4:C30") 
     length = Len(r.Offset(0, 1)) 

     With r.Characters(Start:=1, Length:=length).Font 
      .Color = -16776961 
     End With 

    Next 

End Sub 
+0

Я не думаю, что вы будете в состоянии назвать его длина, длина ': = length' выглядит, как это будет вызвать проблему с зарезервированным именем –

+0

Длина: = является именованным параметром, а не зарезервированным словом. –

+0

Спасибо, это сработало отлично. – 0263359

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