Страницы: 1
RSS
Как выделить жирным в ячейке заголовок
 
Здрвствуйте!
В ячейке находится следующий текст:

Яблоко
Растет яблоко на деревьях
Малина
Растет малина на кустах
Ананас
Растет ананас под землей

Нужно чтобы макрос выделил яблоко, малину и ананас, которые находятся в заголовке, жирным, и при этом не выделял те же слова в остальном тексте.
Заранее, огромное спасибо!
 
Доброе время суток
Цитата
Anton_Kozlov написал:
которые находятся в заголовке,
Подскажите, пожалуйста, как определить, что в ячейке заголовок, а что текст параграфа?
 
Честно, говоря я сам не знаю как определить. Единственное то, что заголовок начинается с начала строки и все, ну и конкретное слово. То есть надо чтобы было так: Выделить жирным текст, если он начался с начала строки и это слово (или слова) "Яблоко" и после него нажат Интер(или после "Яблоко" ничего нет.

Такая проблема появилась потому, что мне нужно было совместить две ячейки и  одна из них была как заголовок, выделена жирным цветом. А при сложении формула, оказывается не воспринимает форматирование.

И, кстати, Андрей VG, спасибо, что помогли с решением прошлой проблемы!
Изменено: Anton_Kozlov - 27.12.2019 20:07:33
 
Цитата
чтобы макрос выделил яблоко, малину и ананас
Может так
Код
Sub BoldFont()
Dim arr
Dim n As Integer
Dim k As Integer
  arr = Split(Cells(1, 1), Chr(10))
  For n = 0 To UBound(arr) Step 2
    k = InStr(1, Cells(1, 1), arr(n))
    Cells(1, 1).Characters(k, Len(arr(n))).Font.Bold = True
  Next
End Sub
 
Цитата
Kuzmich написал:
Может так
Может так, а может и не так...
Я давно уже без файла-примера не даю ни каких решений.
 
Михаил Витальевич С., вот файл  
 
Anton_Kozlov, так вам нужно, что получалось в ячейке, где формула (А4)? Формулы не останется...
 
Kuzmich, Немного не получается. С тем примером, который я написал работает, но а если его поменять, то он весь текст жирным выделяет.
 
Михаил Витальевич С., Да, можно чтобы формулы не оставалось. Так я и хотел. Я некорректный пример показал.  
 
Anton_Kozlov,
Цитата
Я некорректный пример показал.
Покажите корректный
 
Опишите задачу более развернуто, и покажите корректный пример.
 
Вот. Надо как-бы выделить все заголовки жирным.  
Изменено: Anton_Kozlov - 28.12.2019 12:29:39
 
На основе кодаKuzmich:
Код
Sub Test()
    Dim a, k, n
    ActiveCell.Value = ActiveCell.Value ' это если в ячейке формула
    a = Split(ActiveCell, Chr(10))
    For n = 0 To UBound(a) Step 3
        k = InStr(1, Cells(1, 1), a(n))
        Cells(1, 1).Characters(k, Len(a(n))).Font.Bold = True
    Next
End Sub
Изменено: Михаил Витальевич С. - 28.12.2019 15:54:39
 
Михаил Витальевич С.,
А если скажем слово из заголовка "Youtube" встретится внутри первых двух частей предложения?
 
Значит не повезло.
 
Доброе время суток
Вариант на регулярках.
Код
Public Sub MarkHeaderWithBold()
    Dim pReg As Object, pCell As Range, i As Long
    Dim pItems As Object, pItem As Object
    Set pReg = CreateObject("VBScript.RegExp")
    pReg.Pattern = "(?:^|\n\n).+(?=\n)"
    pReg.Global = True
    For Each pCell In Selection
        Set pItems = pReg.Execute(pCell.Value)
        For i = 0 To pItems.Count - 1
            Set pItem = pItems(i)
            pCell.Characters(pItem.FirstIndex + 1, pItem.Length - 2).Font.Bold = True
        Next
    Next
End Sub
 
Цитата
Anton_Kozlov написал:
Надо как-бы выделить все заголовки жирным
оберните в теги H1..H6
Шутка)
 
Цитата
artyrH написал:
оберните в теги H1..H6Шутка)
Привет, Артур.
Сначала нужно определить - что является заголовком. ;)  Можно, как вы предложили сделать это явно, заворачивая в тэги, а можно не противоречивым описанием.
 
Тёзка, прЮвет.
С утра озадачился аналогичным, но не судьба...
Но это
Код
   pReg.Pattern = "(?:^|\n\n).+(?=\n)"

весьма интересно
 
привет всем
Цитата
Anton_Kozlov написал:
Такая проблема появилась потому, что мне нужно было совместить две ячейки и  одна из них была как заголовок, выделена жирным цветом. А при сложении формула, оказывается не воспринимает форматирование.
покажите это в примере
 
artyrH,
В сообщении #6 есть пример
 
Kuzmich, увидел
Anton_Kozlov, мне интересно. вы этот текст подготавливаете для другой программы? для какой?
 
Цитата
artyrH написал:
Anton_Kozlov , мне интересно. вы этот текст подготавливаете для другой программы? для какой?
Боюсь, коллега, потребитель не удовлетворит нашего любопытства - это ноухау :)
 
Андрей, что дает?
Код
(?=\n)

Вроде и без этой части все работает.

Про #18 и #19 забыл напрочь, поэтому обнаружив открытый со вчерашнего дня файл, продолжил изыски... :)
Уж поелику написал, то выложу.
Код
Sub Мяу()
    Dim cel As Range, oMatches As Object, i&
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "(^|" & Chr(10) & Chr(10) & ").+"
       Application.ScreenUpdating = False
        For Each cel In Selection
            Set oMatches = .Execute(cel.Value)
            For i = 0 To oMatches.Count - 1
                cel.Characters(oMatches(i).FirstIndex - (i > 0) * 2 + 1, oMatches(i).Length + (i > 0) * 2).Font.Bold = True
            Next
        Next
        Application.ScreenUpdating = True
    End With
End Sub
 
Цитата
RAN написал:
Вроде и без этой части все работает.
Привет, тёзка.
В общем-то ничего удивительного, что здесь, что здесь, указано, что метасимвол (десятичная точка) соответствует любому символу кроме переноса строки.
А уже явно это использовать или не явно - дело личных предпочтений. :)  (забавная двусмысленная фраза получилась)
 
artyrH, Андрей VG, Честно говоря, не понял вопроса. Если вы про текст, который я написал в качестве примера, то это просто пример. Мне нужно сделать автозаполнение документов, и там много условий, чтобы собрать нужный текст, а когда он по формулам собирается, то оказывается, он не наследует форматирование и вот такая проблема вылезла с текстом. Надеюсь, смог ответить на вопрос
Изменено: Anton_Kozlov - 01.01.2020 15:41:28
 
Всем спасибо большое за помощь. Я очень часто начал заходить сюда в последнее время за рукой помощи, которая вытащит меня из болота. И все время вы мне помогаете! Спасибо вам огромное! И С НОВЫМ ГОДОМ, господа!!! :)  Всего вам наилучшего в 2020!!!
Изменено: Anton_Kozlov - 01.01.2020 15:39:38
 
Цитата
Anton_Kozlov написал:
Честно говоря, не понял вопроса.
И вас с наступившим.
Чтобы понимать вопрос, нужно немножечко знать Excel. В ячейке рабочего листа книги Excel может быть только последовательность некоторых символов, плюс, форматирование их можно выполнить только тогда, когда эта последовательность символов записана напрямую в ячейку, а не является результатом вывода некоторой формулы. Поэтому чтобы выделять что-то как заголовок в ячейке - нужно определить, что вы подразумеваете под заголовком в этой последовательности символов. Так будет понятнее?
Изменено: Андрей VG - 01.01.2020 15:59:11
 
Андрей VG, да "Поэтому чтобы выделять что-то как заголовок в ячейке - нужно определить, что вы подразумеваете под заголовком в этой последовательности символов" это я понял.
Я не понял вопроса artyrH "Anton_Kozlov, мне интересно. вы этот текст подготавливаете для другой программы? для какой?".
Но думаю вопрос уже можно считать закрытым) Ну или нет.

Честно говоря, я до сих пор в восторге, что вы смогли мне помочь. Не думал, что получится! Еще раз спасибо большое :)  
Страницы: 1
Наверх