Новости:

Теперь на форум можно залогиниться / зарегистрироваться с помощью ВКонтакте. Уже существующие пользователи могут связать свою учетную запись с аккаунтом ВКонтакте одним кликом в профиле пользователя http://forum.msexcel.ru/index.php?action=profile;area=account

Главное меню

форматирование фрагмента текста

Автор sylvio, 26.04.2011, 18:58

« назад - далее »

sylvio

Прошу помочь с макросом, который бы выделял жирным фрагмент текста типа AB#### (# - любая цифра) в определенной строке.

sylvio

Спасибо большое!
А можно, чтобы выделял все, вместе с AB?
То есть необходимо  форматирование жирным только фрагмента AB####.

Andrey Lenets

по началу не точно понял задачу... сори!  :-[
пример в файле!  8)

ЗЫ: "AB" - английские!

sylvio

#3
Да, это оно, спасибо.
Возникла следующая проблема. На листе уже имеется скрипт для форматирования текста в одной из строк. Когда добавляю  второй скрипт,  он оказывается не активным. Вот все вместе:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count - 1 Then Exit Sub
If Intersect(Target, [3:3]) Is Nothing Then Exit Sub
l_ = Len(Target)
For i = 1 To l_
   n_ = Mid(Target, i, 1)
   If IsNumeric(n_) Then
       Target.Characters(Start:=i, Length:=1).Font.Subscript = True
   End If
Next i

If Target.Row <> 9 Then Exit Sub
   Dim ñ As Object, s As Integer, a As String
   With Target
       For Each c In .Cells
           If c.Value Like "*AB????*" Then
               For s = 1 To Len(c.Value) - 5
                   a = Mid(c.Value, s, 6)
                   If a Like "AB????" And IsNumeric(Right(a, 4)) Then c.Characters(s, 6).Font.Bold = True
               Next s
           End If
       Next c
   End With
End Sub

В чем может быть дело?

_Boroda_

До боли знакомый первый кусок макроса.
Вы там написали, если русским языком сказать, что что-то делать будем только в том случае, если изменения произошли одновременно и в 3-й , и в 9-й строках.
А вот если так, то должно работать
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count - 1 Then Exit Sub
If Target.Row = 3 Then
l_ = Len(Target)
For i = 1 To l_
    n_ = Mid(Target, i, 1)
    If IsNumeric(n_) Then
        Target.Characters(Start:=i, Length:=1).Font.Subscript = True
    End If
Next i
End If

If Target.Row = 9 Then
    Dim n As Object, s As Integer, a As String
    With Target
        For Each c In .Cells
            If c.Value Like "*AB????*" Then
                For s = 1 To Len(c.Value) - 5
                    a = Mid(c.Value, s, 6)
                    If a Like "AB????" And IsNumeric(Right(a, 4)) Then c.Characters(s, 6).Font.Bold = True
                Next s
            End If
        Next c
    End With
End If
End Sub
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Andrey Lenets

#5
нужно обработать форматирование 9 строки, поэтому так:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Object
   For Each r In Target.Rows
       If r.Row = 9 Then
           Dim n As Object, s As Integer, a As String
           With r
               For Each c In .Cells
                   If c.Value Like "*AB????*" Then
                       For s = 1 To Len(c.Value) - 5
                           a = Mid(c.Value, s, 6)
                           If a Like "AB????" And IsNumeric(Right(a, 4)) Then c.Characters(s, 6).Font.Bold = True
                       Next s
                   End If
               Next c
           End With
       End If
   Next r
   
   If Target.Count - 1 Then Exit Sub
   If Intersect(Target, [3:3]) Is Nothing Then Exit Sub
   l_ = Len(Target)
   For i = 1 To l_
       n_ = Mid(Target, i, 1)
       If IsNumeric(n_) Then
           Target.Characters(Start:=i, Length:=1).Font.Subscript = True
       End If
   Next i

End Sub


Подправил свою часть кода - строка 9 обрабатывается даже при изменении диапазона, если она в него попадает!

sylvio

Andrey Lenets и _Boroda_ большое спасибо! Теперь все работает как надо.
А код, да, ваш, _Boroda_.