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

Вход

Регистрация

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

 

= Мир MS Excel/Конфликт названий стилей в разных версиях Excel - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Конфликт названий стилей в разных версиях Excel (Макросы/Sub)
Конфликт названий стилей в разных версиях Excel
Невилл Дата: Четверг, 05.05.2016, 15:36 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 70
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Привет всем. Небольшой вопрос возник при написании макроса и его тестировании.

В общем, есть файл с макросом для формирования разнообразных отчетов.
Одной из составляющих частей макроса есть подпрограмма для автоматического форматирования отчет.
Например, если строка входит в блок такой-то, то применить к ней стиль такой-то, формат чисел 0,00 и т.п.

Писал все это дело в Excel2016, а теперь на рабочем компе с Excel2013 получаю ошибку:
Runtime Error 405: Wrong number of arguments or invalid prorerty assignment.

Как оказалось, ругается на это: .Style = "40% — акцент1"
Потом заметил, что в Excel2013 этот же стандартный стиль называется чуть иначе: "40% - Акцент1" (через дефис и с заглавной А).

Если поправить везде, но работает нормально в Excel2013, но аналогично ругается более новый офис.
С другими стилями "Заголовок 1", например, проблем не возникает.

Честно сказать, не часто стилями вообще пользуюсь, а в VBA и подавно. Может, упускаю что-то.

Посоветуйте, как мне этот дурацкий прикол с дефисом/тире заставить работать нормально и там, и там.
Пока у меня две идеи есть:
1) создать копии 4 нужных стилей, присвоить нормальные имена и использовать их просто;
2) вынести присвоение названий стилей в отдельный блок и дописать условие: ЕСЛИ версияЭксель =13, ТО ..., ИНАЧЕ ...

Что надежней и практичней?
 
Ответить
СообщениеПривет всем. Небольшой вопрос возник при написании макроса и его тестировании.

В общем, есть файл с макросом для формирования разнообразных отчетов.
Одной из составляющих частей макроса есть подпрограмма для автоматического форматирования отчет.
Например, если строка входит в блок такой-то, то применить к ней стиль такой-то, формат чисел 0,00 и т.п.

Писал все это дело в Excel2016, а теперь на рабочем компе с Excel2013 получаю ошибку:
Runtime Error 405: Wrong number of arguments or invalid prorerty assignment.

Как оказалось, ругается на это: .Style = "40% — акцент1"
Потом заметил, что в Excel2013 этот же стандартный стиль называется чуть иначе: "40% - Акцент1" (через дефис и с заглавной А).

Если поправить везде, но работает нормально в Excel2013, но аналогично ругается более новый офис.
С другими стилями "Заголовок 1", например, проблем не возникает.

Честно сказать, не часто стилями вообще пользуюсь, а в VBA и подавно. Может, упускаю что-то.

Посоветуйте, как мне этот дурацкий прикол с дефисом/тире заставить работать нормально и там, и там.
Пока у меня две идеи есть:
1) создать копии 4 нужных стилей, присвоить нормальные имена и использовать их просто;
2) вынести присвоение названий стилей в отдельный блок и дописать условие: ЕСЛИ версияЭксель =13, ТО ..., ИНАЧЕ ...

Что надежней и практичней?

Автор - Невилл
Дата добавления - 05.05.2016 в 15:36
Pelena Дата: Четверг, 05.05.2016, 15:53 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 9842
Репутация: 2252 ±
Замечаний: 0% ±

Excel 2010 & Mac Excel 2011
Здравствуйте.
Вот тут недавно обсуждалось


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Вот тут недавно обсуждалось

Автор - Pelena
Дата добавления - 05.05.2016 в 15:53
Невилл Дата: Четверг, 05.05.2016, 16:03 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 70
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Pelena, спасибо большое. Буду читать сейчас.
Надо же, брат по несчастью на том же форуме, недавно, да еще и с тем же самым стилем)))
 
Ответить
СообщениеPelena, спасибо большое. Буду читать сейчас.
Надо же, брат по несчастью на том же форуме, недавно, да еще и с тем же самым стилем)))

Автор - Невилл
Дата добавления - 05.05.2016 в 16:03
_Boroda_ Дата: Четверг, 05.05.2016, 16:17 | Сообщение № 4
Группа: Модераторы
Ранг: Экселист
Сообщений: 9347
Репутация: 3922 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
К стилю можно обращаться не по имени, а по порядковому номеру ThisWorkbook.Styles(n)
Список номеров с раскраской смотрите в файле
Вынимаются они, например, вот так:
[vba]
Код
Sub Макрос1()
'    Application.ScreenUpdating = 0
    n = 999'на самом деле их 47
    On Error Resume Next
    For i = 1 To n
        Range("A" & i) = "Стиль №" & i & " - " & ThisWorkbook.Styles(i).NameLocal
        Range("A" & i).Style = ThisWorkbook.Styles(i)
    Next i
    MsgBox "Всё"
End Sub
[/vba]

То есть, вместо
[vba]
Код
.Style = "40% — акцент1"
[/vba]можно писать
[vba]
Код
.Style = ThisWorkbook.Styles(7)
[/vba]
К сообщению приложен файл: _Excel.xlsm(17Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеК стилю можно обращаться не по имени, а по порядковому номеру ThisWorkbook.Styles(n)
Список номеров с раскраской смотрите в файле
Вынимаются они, например, вот так:
[vba]
Код
Sub Макрос1()
'    Application.ScreenUpdating = 0
    n = 999'на самом деле их 47
    On Error Resume Next
    For i = 1 To n
        Range("A" & i) = "Стиль №" & i & " - " & ThisWorkbook.Styles(i).NameLocal
        Range("A" & i).Style = ThisWorkbook.Styles(i)
    Next i
    MsgBox "Всё"
End Sub
[/vba]

То есть, вместо
[vba]
Код
.Style = "40% — акцент1"
[/vba]можно писать
[vba]
Код
.Style = ThisWorkbook.Styles(7)
[/vba]

Автор - _Boroda_
Дата добавления - 05.05.2016 в 16:17
Невилл Дата: Четверг, 05.05.2016, 21:59 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 70
Репутация: 2 ±
Замечаний: 0% ±

Excel 2007
Boroda, о, вот это замечательно. Как раз идеальное решение для меня.
Без лишнего кода и сохранится привязка к "теме книги" и цветовой гамме.

Благодарю! hands
 
Ответить
СообщениеBoroda, о, вот это замечательно. Как раз идеальное решение для меня.
Без лишнего кода и сохранится привязка к "теме книги" и цветовой гамме.

Благодарю! hands

Автор - Невилл
Дата добавления - 05.05.2016 в 21:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Конфликт названий стилей в разных версиях Excel (Макросы/Sub)
Страница 1 из 11
Поиск:

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