Страницы: 1
RSS
Выполняется только первое условие кода, VBA, Выполняется только первое условие
 
Привет!

Друзья, посмотрите код, у меня работает только 1 условие:
Код
Sub clearRT()

If ActiveWorkbook.Name <> "Отчет по Центру А*" Then
 Application.ActiveSheet.range("F6:G26").ClearContents
 Application.ActiveSheet.range("L6:L26").ClearContents
ElseIf ActiveWorkbook.Name <> "Отчет по Центру Б*" Then
 Application.ActiveSheet.range("G6:H23").ClearContents
 Application.ActiveSheet.range("M6:M23").ClearContents
ElseIf ActiveWorkbook.Name <> "Отчет по Центру В*" Then
 Application.ActiveSheet.range("F6:G10").ClearContents
 Application.ActiveSheet.range("L6:L10").ClearContents

End if

end
Здесь точно такое же:
Код
If ActiveWorkbook.Name <> "Отчет по Центру А*" Then
Application.ActiveSheet.range("B2").Value = "Центр А" & StrConv(Format(Now - 1, "dd.mm.yy dddd"), vbProperCase)
ElseIf ActiveWorkbook.Name <> "Отчет по Центру Б*" Then
Application.ActiveSheet.range("B2").Value = "Центр Б " & StrConv(Format(Now - 1, "dd.mm.yy dddd"), vbProperCase)
ElseIf ActiveWorkbook.Name <> "Отчет по Центру В*" Then
Application.ActiveSheet.range("B2").Value = "Центр В " & StrConv(Format(Now - 1, "dd.mm.yy dddd"), vbProperCase)

End If

END

Работает только условие по центру А при любом названии книги, как исправить?
 
Цитата
zandaki2 написал:
Работает только условие по центру А
лукавите
если книга называется Отчет по Центру А сработает условие Отчет по Центру Б, иначе сработает условие Отчет по Центру А.
учловие Отчет по Центру В - уверенно можете удалить из этого кода, в ту ветку кода выполнение не попадет НИКОГДА.
Изменено: Ігор Гончаренко - 24.10.2019 12:29:53
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
zandaki2 написал:
If ActiveWorkbook.Name <> "Отчет по Центру А*" Then
Имя книги (и файла) не может содержать * .
 
Там знак подстановки у вас неправильно использован. Вы сравниваете имя книги с текстовой строкой (в кавычках). А думаете, что сравниваете имя книги с строкой ""Отчет по Центру А" и еще куча возможных символов.
Для проверки условия, как вы хотите, надо отлавливать вхождение одной строки в другой. Это можно сделать при помощи функции InStr(НачПозиция, ГдеИскать, ЧтоИскать)
Например:
Код
If InStr(1, ActiveWorkbook.Name, "Отчет по Центру А")>0 Then 'если нашли в имени книги подстроку... 
'тут код, что делать в этом случае
ElseIF... (и т.д.) 

А так у вас имя книги сравнивается со строкой, в которой звездочка - естественно, имя книги не такое - вот первое условие и срабатывает.
Изменено: Пытливый - 24.10.2019 12:37:45
Кому решение нужно - тот пример и рисует.
 
Пытливый, просто ранее на форуме ( тут ) мне предлагали именно такой метод
 
Цитата
zandaki2 написал:
мне предлагали именно такой метод
но без звездочек же :) Если хотите использовать звездочку как подстановочный символ, то сравнивайте при помощи Like:
Код
If Not ActiveWorkbook.Name Like "Отчет по Центру А*" Then
Да и правильно Вам заметили, что логика кода хромает. Надо менять подход. Какие действия хотите таким образом выполнить?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Апострофф, со звездочками пример нашел ( тут )
 
Цитата
zandaki2 написал:
со звездочками пример нашел
ага. И взяли оттуда не пример решения, а пример нерабочего кода :) Надо было дальше читать, там и разъяснили что не так и правильный синтаксис привели. Ну и я выше показал как будет правильнее в Вашем случае.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
нашли - пользуйтесь
хотите чтобы что-то начало работать - обьясните задачу, которая стоит перед Вами
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Дмитрий(The_Prist) Щербаков, Пытливый,

спасибо всем! заработало, сделал как сказал Дмитрий(The_Prist) Щербаков,

Цитата
Дмитрий(The_Prist) Щербаков написал:
1If Not ActiveWorkbook.Name Like "Отчет по Центру А*" Then
Страницы: 1
Наверх