Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Выделение заданного фрагмента текста в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделение заданного фрагмента текста в ячейке (Макросы Sub)
Выделение заданного фрагмента текста в ячейке
igrtsk Дата: Пятница, 29.11.2013, 10:11 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 314
Репутация: 50 ±
Замечаний: 0% ±

Excel 2016
Доброго времени суток всем форумчанам!
Подскажите, как используя макрос (или другие инструменты excel) сделать выделенным определенный текст из всего написанного в ячейке. При условии, что данный фрагмент, который необходимо выделить, может находиться на любой позиции с точки зрения привязки к порядковому номеру символа.
К сообщению приложен файл: 5571846.xls (44.5 Kb)


Инструктор по применению лосей в кавалерийских частях РККА
 
Ответить
СообщениеДоброго времени суток всем форумчанам!
Подскажите, как используя макрос (или другие инструменты excel) сделать выделенным определенный текст из всего написанного в ячейке. При условии, что данный фрагмент, который необходимо выделить, может находиться на любой позиции с точки зрения привязки к порядковому номеру символа.

Автор - igrtsk
Дата добавления - 29.11.2013 в 10:11
nilem Дата: Пятница, 29.11.2013, 10:42 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
igrtsk, привет
можно, например, так
[vba]
Код
Sub ertert()
Dim s$, r As Range, i&, j&
s = Range("E3").Value: j = Len(s)
With Range("C1", Cells(Rows.Count, 3).End(xlUp))
      .Font.Bold = False
      For Each r In .Cells
          i = InStr(r, s)
          If i Then r.Characters(i, j).Font.Bold = True
      Next
End With
End Sub
[/vba]
в файле пишем нужное слово в яч. Е3 и нажимаем зел. кнопку

ПС ну как там лоси поживают? :)
К сообщению приложен файл: _5571846.xls (43.5 Kb)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Пятница, 29.11.2013, 10:43
 
Ответить
Сообщениеigrtsk, привет
можно, например, так
[vba]
Код
Sub ertert()
Dim s$, r As Range, i&, j&
s = Range("E3").Value: j = Len(s)
With Range("C1", Cells(Rows.Count, 3).End(xlUp))
      .Font.Bold = False
      For Each r In .Cells
          i = InStr(r, s)
          If i Then r.Characters(i, j).Font.Bold = True
      Next
End With
End Sub
[/vba]
в файле пишем нужное слово в яч. Е3 и нажимаем зел. кнопку

ПС ну как там лоси поживают? :)

Автор - nilem
Дата добавления - 29.11.2013 в 10:42
igrtsk Дата: Пятница, 29.11.2013, 10:58 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 314
Репутация: 50 ±
Замечаний: 0% ±

Excel 2016
можно, например, так

Спасибо!
Интересный вариант. Надо его осмыслить.

P.S. Лоси в порядке. Передают привет! :D


Инструктор по применению лосей в кавалерийских частях РККА
 
Ответить
Сообщение
можно, например, так

Спасибо!
Интересный вариант. Надо его осмыслить.

P.S. Лоси в порядке. Передают привет! :D

Автор - igrtsk
Дата добавления - 29.11.2013 в 10:58
Саня Дата: Пятница, 29.11.2013, 11:08 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 1068
Репутация: 560 ±
Замечаний: 0% ±

XL 2016
не успел, но все же

Выделяем ячейки и выполняем проц. DoIt:
[vba]
Код
Option Explicit
Private mavPunct()

Sub DoIt()
       mavPunct = Array(" ", ",", ".", ";", ":", "!")
       ' символы, к-рые могут идти после искомого слова _
         нужно, чтобы искть ТОЛЬКО целые слова

       Dim c As Range
       For Each c In Selection
           BoldWord c, "украл"
       Next c
End Sub

'=================================================================
Sub BoldWord(rngIn As Range, sWord As String)
       Dim lPos As Long
       lPos = 1

       Dim lLen As Long
       lLen = Len(sWord)

       Dim sLS As String
       Do
           lPos = InStr(lPos, rngIn.Value, sWord)
           If lPos = 0 Then Exit Do

           sLS = Mid$(rngIn.Value, lPos + lLen, 1)
           If bSymbolIsValid(sLS) Then
               rngIn.Characters(lPos, lLen).Font.Bold = True
           End If

           lPos = lPos + lLen
       Loop
End Sub

Function bSymbolIsValid(sS As String) As Boolean
       Dim i As Integer
       For i = LBound(mavPunct) To UBound(mavPunct)
           If sS = mavPunct(i) Then
               bSymbolIsValid = True
               Exit For
           End If
       Next i
End Function
'=================================================================
[/vba]
 
Ответить
Сообщениене успел, но все же

Выделяем ячейки и выполняем проц. DoIt:
[vba]
Код
Option Explicit
Private mavPunct()

Sub DoIt()
       mavPunct = Array(" ", ",", ".", ";", ":", "!")
       ' символы, к-рые могут идти после искомого слова _
         нужно, чтобы искть ТОЛЬКО целые слова

       Dim c As Range
       For Each c In Selection
           BoldWord c, "украл"
       Next c
End Sub

'=================================================================
Sub BoldWord(rngIn As Range, sWord As String)
       Dim lPos As Long
       lPos = 1

       Dim lLen As Long
       lLen = Len(sWord)

       Dim sLS As String
       Do
           lPos = InStr(lPos, rngIn.Value, sWord)
           If lPos = 0 Then Exit Do

           sLS = Mid$(rngIn.Value, lPos + lLen, 1)
           If bSymbolIsValid(sLS) Then
               rngIn.Characters(lPos, lLen).Font.Bold = True
           End If

           lPos = lPos + lLen
       Loop
End Sub

Function bSymbolIsValid(sS As String) As Boolean
       Dim i As Integer
       For i = LBound(mavPunct) To UBound(mavPunct)
           If sS = mavPunct(i) Then
               bSymbolIsValid = True
               Exit For
           End If
       Next i
End Function
'=================================================================
[/vba]

Автор - Саня
Дата добавления - 29.11.2013 в 11:08
igrtsk Дата: Пятница, 29.11.2013, 12:11 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 314
Репутация: 50 ±
Замечаний: 0% ±

Excel 2016
не успел, но все же

Успел! Успел!
Ваш вариант мне больше подходит.
Действительно, в моем случае рассматриваются только целые слова, и разнообразие слов (словосочетаний), которые необходимо выделять - невелико.
Спасибо!


Инструктор по применению лосей в кавалерийских частях РККА
 
Ответить
Сообщение
не успел, но все же

Успел! Успел!
Ваш вариант мне больше подходит.
Действительно, в моем случае рассматриваются только целые слова, и разнообразие слов (словосочетаний), которые необходимо выделять - невелико.
Спасибо!

Автор - igrtsk
Дата добавления - 29.11.2013 в 12:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выделение заданного фрагмента текста в ячейке (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!