Страницы: 1
RSS
Изменение размера шрифта в зависимости от числа знаков в ячейке
 
Добрый день! Нужно чтобы в ячейке F7, если количество символов превышает 5 шрифт уменьшался с 16 на 14. Помогите пожалуйста.
 
В модуль листа:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("F7")) Is Nothing Then
        If Len(Target) > 5 Then
            Target.Font.Size = 14
        Else
            Target.Font.Size = 16
        End If
    End If
End Sub
 
Если непосредственно вводить текст в ячейке, то работает. Но так как в ячейке содержится формула то не работает.
 
Впервые слышу, что там формула. Или Вы об этом написали, а я просмотрел?
 
Так в приложенном файле формула есть, поэтому и не стал писать
 
Код
Private Sub Worksheet_Calculate()
    With Range("F7")
        If Len(.Value) > 5 Then
            .Font.Size = 14
        Else
            .Font.Size = 16
        End If
    End With
End Sub
 
Спасибо большое!!!
 
А как будет выглядеть макрос, если к нему добавить ещё 2 условия по количеству символов?  
К примеру: > 20, масштаб 12
                  > 30, масштаб 10.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    With Range("F7")
        Select Case Len(.Value)
            Case Is >= 30
                .Font.Size = 10
            Case Is >= 20
                .Font.Size = 12
            Case Is >= 5
                .Font.Size = 14
            Case Else
                .Font.Size = 16
        End Select
    End With
End Sub

Изменено: Sanja - 22.02.2015 09:23:48
Согласие есть продукт при полном непротивлении сторон
 
Может просто Формат ячеек - выравнивание - автоподбор ширины?
 
Sanja, макрос не работает.
В ячейке есть формула, может по этому?
Изменено: Михаил - 24.02.2015 07:31:58
 
Код
Private Sub Worksheet_Activate()
    With Range("F7")
        Select Case Len(.Value)
            Case Is >= 30
                .Font.Size = 10
            Case Is >= 20
                .Font.Size = 12
            Case Is >= 5
                .Font.Size = 14
            Case Else
                .Font.Size = 16
        End Select
    End With
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Оk, заработал.
Изменено: Михаил - 24.02.2015 17:42:01
 
М.б. лучше Len(.Text) вместо Len(.Value)
F1 творит чудеса
 
Макрос Sanja, срабатывает, только при переключении вкладок, а хотелось бы при выборе данных из списка на текущем листе или изменении информации в ячейке с изменяемым шрифтом.
 
Поменяйте событие.
 
Не знаю, что такое событие???:(
 
Цитата
Михаил написал:
хотелось бы при выборе данных из списка на текущем листе или изменении информации в ячейке с изменяемым шрифтом
В вашем примере список совсем НЕ на ТЕКУЩЕМ листе и в изменяемой ячейке ФОРМУЛА. См. п.2.3. Правил форума (особенно про РЕАЛЬНУЮ структуру файла). Желательно сразу ВСЕ хотелки продумать
Согласие есть продукт при полном непротивлении сторон
 
Я когда переношу макрос из тем форума, никогда не знаю от чего он будет работать. От переключения вкладок, от "зайти-выйти из ячейки", от созданной кнопки на листе, по этому и появляются такие вопросы.
Так нельзя сделать, что бы макрос сработал от любых изменений на листе?
 
Цитата
Михаил написал: не знаю от чего он будет работать
От чего Вы хотите что-бы он работал?
Цитата
Не знаю, что такое событие
ознакомтесь
Цитата
сработал от любых изменений на листе
кол-во обрабатываемых событий ограничено - нужно выбрать
Про события Книги так-же посмотрите
Изменено: Sanja - 02.03.2015 00:22:38
Согласие есть продукт при полном непротивлении сторон
 
Спасибо, Sanja за ссылку, разобрался, получилось, макрос работает как надо!
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Sanja, появилась необходимость вносить изменения в рабочий файл, в связи с чем вопрос, как изменится макрос, если будет не ода ячейка F7, а например две ячейки (F7 и F10), где нужно менять размер шрифта?
Страницы: 1
Наверх