Страницы: 1
RSS
Изменение цвета текста, размещенного в колонтитуле
 
Доброй ночи всем.
Требуется помощь специалистов.
Имеем колонтитул, в правом верхнем блоке которого размещен текст в две строки - первая строка жирным текстом, вторая - обычным.
В зависимости от значения, выбираемого пользователем в ячейке листа (например, в S4) из двух вариантов, текст в колонтитуле должен меняться со стандартного (черного) на белый для того, чтобы при печати его не было видно.
В настоящий момент смог решить эту задачку только способом подстановки значения в колонтитул из ячеек скрытого листа:

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("S4").Value = "А" Then
Worksheets("В").PageSetup.RightHeader = "&""Times New Roman""&8" & Worksheets("С").Range("O50") & Chr(10) & Worksheets("С").Range("O51")
  Else: Worksheets("В").PageSetup.RightHeader = Worksheets("С").Range("O52")
   End If
End Sub
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("S4").Value = "А" Then
Worksheets("В").PageSetup.RightHeader = "&""Times New Roman""&8" & Worksheets("С").Range("O50") & Chr(10) & Worksheets("С").Range("O51")
   Else: Worksheets("В").PageSetup.RightHeader = Worksheets("С").Range("O52")
    End If
End Sub


где О52 - пустая ячейка.


Однако выделение жирным смог сделать только на весь текст, подставляемый в колонтитул.
Очень хотелось бы сделать это как-то по-красивее, ведь должно же быть решение, которое при выборе в ячейке
S4 значения "А" просто изменяло бы цвет текста со стандартного на белый.

Заранее большое спасибо всем откликнувшимся.
Изменено: SerjVorotilov - 26.11.2015 00:18:11
 
SerjVorotilov, не первый день на форуме, а оформлять код тегом так и не научились...
 
Цитата
SerjVorotilov написал: Очень хотелось бы сделать это как-то по-красивее,
А нам-бы эту красоту, да в файле-примере увидеть...
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Юрий М написал:...оформлять код тегом так и не научились...
Да как-то необходимости не было... Юрий, может подскажете где почитать про это?
 
Цитата
Sanja написал: А нам-бы эту красоту, да в файле-примере увидеть...
В файле не вариант - прошу прощения.
Если что-то не понятно - готов попытаться объяснить.
Если по простому:
1. Открываем чистую книгу
2. В колонтитуле первого листа пишем любой текст
3. Если в ячейку А1 листа введен текст "А", то цвет текста колонтитула должен со стандартного измениться на белый, т.е. слиться с цветом бумаги, в остальных случаях - остаться стандартным (черным)

Как-то так...
Изменено: SerjVorotilov - 28.11.2015 23:54:15
 
Мне нравиться этот парень!  ;) Написать как сделать файл-пример вариант, а сделать самому и выложить здесь не вариант. Как-то так...
Согласие есть продукт при полном непротивлении сторон
 
Взаимно))) т.е. про нравится)))
говорил про оригинал файла, пример сейчас будет.
 
Вот и он
 
Цитата
SerjVorotilov написал:не первый день на форуме, а оформлять код тегом так и не научились...
Уже давно не заходил на форум, зашел, и сразу получил нагоняй...
 
Мне кажется Ваш подход (с подтягиванием значений в колонтитул из ячеек) наиболее разумный. Что-то у меня по другому то-же никак
Согласие есть продукт при полном непротивлении сторон
 
А по-моему это какой-то колхозный вариант.
Мне кажется, что должно это решаться как-то с помощью свойств типа
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.Bold = True
и пр.
 
Может быть еще сможете объяснить мне следующее:
можно ли используя мой вариант сделать первую строчку полужирной, а вторую - обычной.
На сколько я понял для этого используется вот эта часть выражения: "&""Times New Roman""&8"
однако при попытке копирования и вставки этой части до или после & Chr(10) (разрыва строки) редактор выдает ошибку Expected: end of statement
 
Доброе время суток
Что-то я не совсем понял - в чём сложность? Поясните, пожалуйста.
Код
    ActiveSheet.PageSetup.CenterHeader = "&""Times New Roman,полужирный""&14Это полужирный текст" & vbLf _
                                         & "&""Times New Roman,обычный""&16Это простой текст"

Создал первую строку полужирным шрифтом размером 14 пунктов, а вторую строку обычным 16 пунктов, для строк - шрифт Times New Roman.

Успехов.
 
Цитата
Андрей VG написал:в чём сложность?
Андрей, спасибо Вам.
как я поняд сложность была в одном знаке & после оператора vbLf - раньше его не добавлял, т.к. не силен в синтаксисе написания таких выражений.
Не подскажете где поподробнее почитать про это - знак конкатенации, двойные кавычки и пр.
В итоге получилось вот так
Код
Worksheets("А").PageSetup.RightHeader = "&""Times New Roman""&8&B" & Worksheets("В").Range("O50") & vbLf 
                                         & "&""Times New Roman, обычный""&8" & Worksheets("В").Range("O51")


В итоге так и не понял почему когда я пишу "Times New Roman, полужирный" - текст первой строки полужирным не становится,
а когда пишу "Times New Roman""&8&B"  - становится?
А во второй строке наоборот - если не написано "обычный" (словом по-русски), то строка, как и первая, воспроизводится жирным шрифтом.
Т.е. в первом случае слово "полужирный" ни на что не влияет, а во втором слово "обычный" влияет
 
Цитата
SerjVorotilov написал:
Т.е. в первом случае слово "полужирный" ни на что не влияет, а во втором слово "обычный" влияет
Можно тогда с ними не заморачиваться. Коды форматирования колонтитулов Formatting and VBA Codes for Headers and Footers. Единственное, формат цвета задаётся в виде &KHHHHHH, где H - цифра шестнадцатеричной системы счисления, у меня отработало под Excel 2010 и 2016.
Код
Public Sub SetupRightFooter()
    Dim topRow As String, bottomRow As String
    topRow = "&""Times New Roman""&14&B&K0000FF" & ActiveSheet.Range("A1").Value
    bottomRow = "&""Times New Roman""&16&B&KFF00FF" & ActiveSheet.Range("A2").Value
    ActiveSheet.PageSetup.CenterHeader = topRow & vbLf & bottomRow
End Sub

Успехов.
 
Цитата
SerjVorotilov написал:
Да как-то необходимости не было... Юрий, может подскажете где почитать про это?
Ищите такую кнопку и исправьте свои сообщения.
 
Спасибо, Юрий. Постарался исправить. Вроде бы получилось.
 
Цитата
Андрей VG написал: Успехов.
Спасибо, Андрей. Попробовал Ваш вариант, в 2013 тоже все работает. За ссылку на коды - отдельное спасибо, хоть пока и не во все разобрался, но если бы она была у меня вчера, несколько вопросов здесь бы не задавал.
 
И все же так и не смог понять - можно ли программно изменять цвет текста, который введен в колонтитул вручную, а не подставлять в колонтитул текст из ячеек листа.
Неужели в принципе нет такой возможности?

P.S. В примере постарался более ясно изложить суть необходимого.
 
Прошу прощения за оффтоп, но уже несколько лет мучаюсь с одной проблемой.
Не понятно почему периодически (обычно при одновременной работе с двумя файлами - всегда одни и те же) эксель вылетает с ошибкой "Прекращена работа ..."
На форум эти файлы для тестирования выложить не могу.
Может есть кто-то из спецов, кто проживает в СПб и сможет уделить мне какую-то часть своего времени лично.
Готов рассмотреть любые варианты и пожелания.

Еще раз извиняюсь за оффтоп.
 
Доброе время суток
Цитата
SerjVorotilov написал:
И все же так и не смог понять - можно ли программно изменять цвет текста,
В принципе, это возможно. Если вы обратитесь к
Код
sText = ActiveSheet.PageSetup.CenterHeader
, то получите строку колонтитула с кодами форматирования. Останется только разобрать её на коды оформления и собственно текст в колонтитуле и изменить как необходимо. Следует учитывать и то, что может использоваться и тема книги для оформления колонтитула, тогда части кодов оформления не будет (будут применяться ко всей строке колонтитула по-умолчанию). Тогда нужно будет в нужное место текста вставить код требуемого цвета.
Страницы: 1
Читают тему
Наверх