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

Вход

Регистрация

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

 

= Мир MS Excel/первая буква имени стиля - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
первая буква имени стиля
карандаш Дата: Пятница, 03.04.2015, 14:38 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Mетодом научного тыка получил макрос перебора Стилей в документе
Проверил, что он работает при указании конкретного имени стиля
Нужно ловить стиль не по конкретному названию, а по его части,
например по первому символу - мои стили начинаются с точки
как поймать стиль по первой букве его имени?

вот мой код
[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
'
Dim st As Style, CntSt As Integer, str As Characters

        ActiveDocument.FormattingShowFilter = wdShowFilterStylesAll
        ActiveDocument.StyleSortMethod = wdStyleSortByName
        Selection.ClearFormatting
        With ActiveDocument
            CntSt = .Styles.Count - 1
            MsgBox ((CntSt))
            For i = 0 To CntSt
               'If Characters(.Styles(i).NameLocal).First = "." Then .Styles(i).Delete
               'If .Styles(i).NameLocal(1) = "." Then .Styles(i).Delete
               If .Styles(i).NameLocal = ".стандартный" Then .Styles(i).Delete
            Next i
        End With
             
End Sub
[/vba]
p.s. хотел было использовать в цикле For Each вместо For To, но он не воспринимает Styles после in как массив


Сообщение отредактировал карандаш - Пятница, 03.04.2015, 14:42
 
Ответить
СообщениеMетодом научного тыка получил макрос перебора Стилей в документе
Проверил, что он работает при указании конкретного имени стиля
Нужно ловить стиль не по конкретному названию, а по его части,
например по первому символу - мои стили начинаются с точки
как поймать стиль по первой букве его имени?

вот мой код
[vba]
Код
Sub Макрос1()
'
' Макрос1 Макрос
'
'
Dim st As Style, CntSt As Integer, str As Characters

        ActiveDocument.FormattingShowFilter = wdShowFilterStylesAll
        ActiveDocument.StyleSortMethod = wdStyleSortByName
        Selection.ClearFormatting
        With ActiveDocument
            CntSt = .Styles.Count - 1
            MsgBox ((CntSt))
            For i = 0 To CntSt
               'If Characters(.Styles(i).NameLocal).First = "." Then .Styles(i).Delete
               'If .Styles(i).NameLocal(1) = "." Then .Styles(i).Delete
               If .Styles(i).NameLocal = ".стандартный" Then .Styles(i).Delete
            Next i
        End With
             
End Sub
[/vba]
p.s. хотел было использовать в цикле For Each вместо For To, но он не воспринимает Styles после in как массив

Автор - карандаш
Дата добавления - 03.04.2015 в 14:38
RAN Дата: Пятница, 03.04.2015, 15:55 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
If Left(.Styles(i).NameLocal,1) = "." Then .Styles(i).Delete
If Instr(.Styles(i).NameLocal,".")  Then .Styles(i).Delete
If .Styles(i).NameLocal like  ".*" Then .Styles(i).Delete
If Mid(.Styles(i).NameLocal,1,1) = "." Then .Styles(i).Delete
[/vba]
:)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
If Left(.Styles(i).NameLocal,1) = "." Then .Styles(i).Delete
If Instr(.Styles(i).NameLocal,".")  Then .Styles(i).Delete
If .Styles(i).NameLocal like  ".*" Then .Styles(i).Delete
If Mid(.Styles(i).NameLocal,1,1) = "." Then .Styles(i).Delete
[/vba]
:)

Автор - RAN
Дата добавления - 03.04.2015 в 15:55
карандаш Дата: Суббота, 04.04.2015, 00:14 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
попробовал два варианта

[vba]
Код
For i = 1 To CntSt
' If InStr(.Styles(i).NameLocal, ".") Then
If Left(.Styles(i).NameLocal, 1) <> "." Then
MsgBox ((.Styles(i).NameLocal))
.Styles(i).Delete
End If
Next i
[/vba]

спотыкается при i=5 на строке .Styles(i).Delete
пишет, что такого имени не существует
Но при этом выводит имя только один раз

но это уже другой вопрос
за помощь большое спасибо


Сообщение отредактировал Serge_007 - Суббота, 04.04.2015, 00:26
 
Ответить
Сообщениепопробовал два варианта

[vba]
Код
For i = 1 To CntSt
' If InStr(.Styles(i).NameLocal, ".") Then
If Left(.Styles(i).NameLocal, 1) <> "." Then
MsgBox ((.Styles(i).NameLocal))
.Styles(i).Delete
End If
Next i
[/vba]

спотыкается при i=5 на строке .Styles(i).Delete
пишет, что такого имени не существует
Но при этом выводит имя только один раз

но это уже другой вопрос
за помощь большое спасибо

Автор - карандаш
Дата добавления - 04.04.2015 в 00:14
  • Страница 1 из 1
  • 1
Поиск:

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