Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2011, 10:42   #1
no_such
 
Регистрация: 18.08.2011
Сообщений: 8
По умолчанию Разный размер шрифта в ячейке с формулами

Здравствуйте!
Очень плохо знакома с VBA, но по работе приходиться изучать понемногу. Благо интернет под рукой. Прошу помощи

Есть ячейка с формулами : =СЦЕПИТЬ(ЕСЛИ((ВПР(BC2;Список!A:F;4 ;0))="ИП";"Выдан индивидуальному предпринимателю";СЦЕПИТЬ("Выдан представителю компании";" ";ВПР(BC2;Список!A:F;4;0)));" ";"(";СЦЕПИТЬ(ЕСЛИ(ЛЕВСИМВ(ВПР(BC2; Список!A:F;5;0);3)="ст.";(ВПР(BC2;С писок!A:F;5;0));СЦЕПИТЬ("г.";ВПР(BC 2;Список!A:F;5;0))));")")

Результат вычислений выглядит вот так: Выдан представителю компании ООО "Зима-Лето" (ст. Динская)

Требуется макрос, а еще лучше встроенное автоматическое форматирование после каких-то изменений в ячейке, чтобы результат вычислений определенной формулы (выделена жирным) в итоге был другого размера.
Т.е.: Выдан представителю компании ООО "Зима-Лето" (ст. Динская)

P.S.: Файл, к сожалению, приложить не могу из соображений конфиденциальности. Большое спасибо за помощь!!
no_such вне форума Ответить с цитированием
Старый 18.08.2011, 10:46   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Насколько я знаю, ячейки с формулами не поддерживают такое форматирование.
Можно написать макрос, которые вычислит значения, запишет эти значения в ячейки, и потом уже отформатирует (выделит) нужные слова.
EducatedFool вне форума Ответить с цитированием
Старый 18.08.2011, 11:05   #3
no_such
 
Регистрация: 18.08.2011
Сообщений: 8
По умолчанию

Спасибо, я вас поняла...
Но для меня нереально сложно записать эту формулу в виде макроса...
Сейчас попробую сделать лайт версию файла и выложить сюда, быть может вы поможете написать нужный макрос?
no_such вне форума Ответить с цитированием
Старый 18.08.2011, 11:14   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Попробуем - вдруг получится)
Пример не забудьте - как есть, и как надо.
EducatedFool вне форума Ответить с цитированием
Старый 18.08.2011, 11:22   #5
no_such
 
Регистрация: 18.08.2011
Сообщений: 8
По умолчанию

У меня 2007 Excel. Файл сохранила для 2003.
Смысл формулы (=СЦЕПИТЬ(ЕСЛИ((ВПР(BC2;Список!A:F;4 ;0))="ИП";"Выдан индивидуальному предпринимателю";СЦЕПИТЬ("Выдан представителю компании";" ";ВПР(BC2;Список!A:F;4;0)));" ";"(";СЦЕПИТЬ(ЕСЛИ(ЛЕВСИМВ(ВПР( BC2; Список!A:F;5;0);3)="ст.";(ВПР(BC2;С писок!A:F;5;0));СЦЕПИТЬ("г.";ВПР(BC 2;Список!A:F;5;0))));")"))в принципе простой:
1) Если в столбце D находится значение "ИП", тогда пишется просто "Выдан индивидуальному предпринимателю", если не находится "ИП", тогда пишется "Выдан представителю компании"+название компании.
2) Если в столбце Е первые три буквы "ст.", тогда просто вставляется значение этой ячейки, если этих букв нет, тогда сцепляется "г." и значение этой ячейки.

Надеюсь не запутала!... Помогите, пожалуйста
Вложения
Тип файла: rar Пример.rar (6.5 Кб, 20 просмотров)
no_such вне форума Ответить с цитированием
Старый 18.08.2011, 11:26   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

в ячейку надо положить значение
его можно отформатировать так:
Код:
  With ActiveCell
    With .Characters(Start:=InStr(25, .Value, " "), _
    Length:=InStr(.Value, "(") - 1 - InStr(25, .Value, " ")).Font
      .FontStyle = "полужирный"
      .Size = 16
    End With
  End With
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 18.08.2011, 11:55   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Неповторимая , попробуйте.
При изменении яч. BC2 макрос собирает данные из A8:A12 в А15, включая некоторое форматирование шрифта.
Соответственно, для настройки вида и содержимого конечной ячейки Вам не надо менять макрос, а только формулы и форматы промежуточных ячеек. Их можно скрыть.
Вложения
Тип файла: rar Пример1.rar (12.9 Кб, 22 просмотров)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 18.08.2011, 11:56   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Вот какой макрос получился:

Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [bc2].Address Then
        On Error Resume Next: Application.ScreenUpdating = False
        With Лист2.Range("a8")
            .Value = Лист2.Range("a7")
            .Font.Bold = False
            .Font.Size = 14

            pos1 = InStr(1, .Value, Лист2.Range("b7"))
            dl = Len(Лист2.Range("b7"))
            If pos1 > 0 Then
                With .Characters(pos1, dl).Font
                    .Bold = True
                    .Size = 16
                End With
            End If
        End With
    End If
End Sub
Пример в файле - проверяйте:
http://excelvba.ru/XL_Files/Sample__...__13-55-29.zip

Формулы (2 шт.) в ячейках A7 и B7 (шрифт белый)
Макрос берет вычисленные формулами значения, и подкрашивает второе значение в тексте первого.
EducatedFool вне форума Ответить с цитированием
Старый 18.08.2011, 12:03   #9
no_such
 
Регистрация: 18.08.2011
Сообщений: 8
По умолчанию

IgorGO, Ваш вариант работает, в принципе... Спасибо!!
Только не могли бы вы пояснить как работает ваш макрос? Что означает 25? Если это количество знаков до текста, который надо форматировать, то в случае "Выдан индивидуальному предпринимателю (ст. Динская)" макрос работать будет некорректно?? Не очень понятно...

Казанский, не совсем то, что мне требуется... Изменение формата нужно для ООО "Зима-Лето", а не для ФИО.

EducatedFool, Спасибо, Ваш вариант мне нравится больше всего!! Буду тестить... Возникнут вопросы - потревожу вас еще раз!

Последний раз редактировалось no_such; 18.08.2011 в 12:10.
no_such вне форума Ответить с цитированием
Старый 18.08.2011, 12:19   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
  With Cells(8, 1)
    .Value = Cells(7, 1)
    With .Characters(Start:=InStr(25, .Value, " "), _
    Length:=InStr(.Value, "(") - 1 - InStr(25, .Value, " ")).Font
      If InStr(Cells(8, 1).Value, "(") - 1 - InStr(25, Cells(8, 1).Value, " ") > 0 Then
        .FontStyle = "полужирный"
        .Size = 22
      End If
    End With
  End With
я, как и Игорь, Вашу страшную формулу переместил в А7 и залил белым цветом (чтобы не отсвечивала).
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Размер шрифта Mortimoro HTML и CSS 4 10.08.2011 07:54
Размер и начертание шрифта valerij Microsoft Office Excel 6 13.12.2009 03:43
Цвет шрифта в ячейке kzld Microsoft Office Excel 16 07.12.2009 17:17
размер шрифта varelik Общие вопросы Delphi 10 16.09.2009 13:58
Размер шрифта Gorychev HTML и CSS 6 25.05.2008 11:42