Как правильно прописать строку в макросе? Условия: если пол (pol) равен м и возраст (v1) больше 19, то "мужчины"; если пол (pol) равен ж и возраст (v1) больше 19, то "женщины". Строка с половиной условия (если пол (pol) равен м) выглядела так: GrVozr2 = IIf(pol = "м", "мужчины", pol & "," & Str(v1) & " -" & Str(v2 - 1) & " лет") А как прописать, чтобы выполнялось условие полностью (если пол (pol) равен м и возраст (v1) больше 19, то "мужчины")? Это нужно для соревнований, и если возраст меньше 19 то категория уже другая (юниоры, юноши, и т.д.).
Как правильно прописать строку в макросе? Условия: если пол (pol) равен м и возраст (v1) больше 19, то "мужчины"; если пол (pol) равен ж и возраст (v1) больше 19, то "женщины". Строка с половиной условия (если пол (pol) равен м) выглядела так: GrVozr2 = IIf(pol = "м", "мужчины", pol & "," & Str(v1) & " -" & Str(v2 - 1) & " лет") А как прописать, чтобы выполнялось условие полностью (если пол (pol) равен м и возраст (v1) больше 19, то "мужчины")? Это нужно для соревнований, и если возраст меньше 19 то категория уже другая (юниоры, юноши, и т.д.).VanBlack
Может быть, посмотрев, за что Вам репутацию загнали в минус, Вы сможете понять почему Вас игнорируют? Но, даже не зная подробностей конфликта, вряд ли кто-нибудь здесь будет Вам далее помогать, увидев, какие уважаемые на форуме люди Вам поставили минусы и стёрли свои ответы.
Может быть, посмотрев, за что Вам репутацию загнали в минус, Вы сможете понять почему Вас игнорируют? Но, даже не зная подробностей конфликта, вряд ли кто-нибудь здесь будет Вам далее помогать, увидев, какие уважаемые на форуме люди Вам поставили минусы и стёрли свои ответы.Alex_ST
Может быть, посмотрев, за что Вам репутацию загнали в минус, Вы сможете понять почему Вас игнорируют? Но, даже не зная подробностей конфликта, вряд ли кто-нибудь здесь будет Вам далее помогать, увидев, какие уважаемые на форуме люди Вам поставили минусы и стёрли свои ответы.
Людям свойственно ошибаться, особенно из-за поспешных выводов. Загнали в минус не обоснованно. В основном, из-за того что я не отвечал. Не отвечал, потому что не было уведомлений что кто-то добавил сообщение в теме, как на других сайтах, поэтому я и не знал о них. Уведомления с этого сайта почему-то приходят только если добавляется личное сообщение. Хорошо не на всех форумах люди такие не обоснованно-обидчивые... Ответ на мой вопрос, даже больше чем я просил (учтены все возрастные категории), если кому интересно: [vba]
Код
Select Case v1 Case Is > 18 If pol = "м" Then GrVozr2 = "мужчины" Else GrVozr2 = "женщины" Case Is > 16 If pol = "м" Then GrVozr2 = "юниоры 17-18 лет" Else GrVozr2 = "юниорки 17-18 лет" Case Is > 14 If pol = "м" Then GrVozr2 = "кадеты 15-16 лет" Else GrVozr2 = "кадетки 15-16 лет" Case Is > 12 If pol = "м" Then GrVozr2 = "юноши 13-14 лет" Else GrVozr2 = "девушки 13-14 лет" Case Is > 10 If pol = "м" Then GrVozr2 = "м. юноши 11-12 лет" Else GrVozr2 = "м. девушки 11-12 лет" Case Else If pol = "м" Then GrVozr2 = "мальчики 9-10 лет" Else GrVozr2 = "девочки 9-10 лет" End Select
[/vba] Не везде хотят только заработать... К счастью, есть ещё добрые люди, оказывающие помощь безвозмездно, т.е. не требующие ничего взамен.
Может быть, посмотрев, за что Вам репутацию загнали в минус, Вы сможете понять почему Вас игнорируют? Но, даже не зная подробностей конфликта, вряд ли кто-нибудь здесь будет Вам далее помогать, увидев, какие уважаемые на форуме люди Вам поставили минусы и стёрли свои ответы.
Людям свойственно ошибаться, особенно из-за поспешных выводов. Загнали в минус не обоснованно. В основном, из-за того что я не отвечал. Не отвечал, потому что не было уведомлений что кто-то добавил сообщение в теме, как на других сайтах, поэтому я и не знал о них. Уведомления с этого сайта почему-то приходят только если добавляется личное сообщение. Хорошо не на всех форумах люди такие не обоснованно-обидчивые... Ответ на мой вопрос, даже больше чем я просил (учтены все возрастные категории), если кому интересно: [vba]
Код
Select Case v1 Case Is > 18 If pol = "м" Then GrVozr2 = "мужчины" Else GrVozr2 = "женщины" Case Is > 16 If pol = "м" Then GrVozr2 = "юниоры 17-18 лет" Else GrVozr2 = "юниорки 17-18 лет" Case Is > 14 If pol = "м" Then GrVozr2 = "кадеты 15-16 лет" Else GrVozr2 = "кадетки 15-16 лет" Case Is > 12 If pol = "м" Then GrVozr2 = "юноши 13-14 лет" Else GrVozr2 = "девушки 13-14 лет" Case Is > 10 If pol = "м" Then GrVozr2 = "м. юноши 11-12 лет" Else GrVozr2 = "м. девушки 11-12 лет" Case Else If pol = "м" Then GrVozr2 = "мальчики 9-10 лет" Else GrVozr2 = "девочки 9-10 лет" End Select
[/vba] Не везде хотят только заработать... К счастью, есть ещё добрые люди, оказывающие помощь безвозмездно, т.е. не требующие ничего взамен.VanBlack
VanBlack, вообще-то такой выбор обычно не прописывается прямо в макросе (мало ли, количество возрастных групп изменится). И даже в таком виде, размер кода избыточен (дописывание цифр возраста можно сделать так: GrVozr2 = IIf(pol = "м", "юниоры", "юниорки") & " 17-18 лет")
[p.s.]А приведённый там код - это то, что вам сделали или код от RAN?[/p.s.]
VanBlack, вообще-то такой выбор обычно не прописывается прямо в макросе (мало ли, количество возрастных групп изменится). И даже в таком виде, размер кода избыточен (дописывание цифр возраста можно сделать так: GrVozr2 = IIf(pol = "м", "юниоры", "юниорки") & " 17-18 лет")
А галку Уведомления на e-mail при ответах поставить?
Виноват, каюсь, просто на других форумах я не ставил никаких галок, но уведомления приходили всегда. Видно там она стоит по умолчанию, что является более правильным. Зачем создавать тему и не быть в курсе событий? Поэтому я и не заходил, так как считал что ответов нет, иначе меня бы уведомили.
скажу: бесплатные раздел полистайте и посмотрите скольким и кто БЕЗВОЗДМЕЗНО помогает
Не спорю, но меня при первой же просьбе о помощи в бесплатном разделе отправили сразу же на фриланс, тыкнув, что путаю понятия "помогите" и "сделайте за меня". Хотя в принципе, любая помощь, это и есть работа сделанная за тебя, полностью или частично.
вообще-то такой выбор обычно не прописывается прямо в макросе (мало ли, количество возрастных групп изменится)
К этому коду приходится прибегать когда уже всё закончилось и ничего не изменится, чтобы вывести протокол хода соревнований. Он работает и меня устраивает как. А за ваш вариант спасибо. Надо будет попробовать. Тот код не от RAN. Как раз с ним мы вели переговоры. Он запросил за него 1000 р., но его немного опередили. На другом форуме помогли, предложив свой вариант. Именно помогли, безвозмездно, не тыча на всякие понятия... Я не против оплаты, если помощь действительно занимает много времени. Мне несколько раз помогали в более серьёзных вопросах, и я сам после предлагал как-то компенсировать затраты в знак благодарности, но человек отказался, не видя в этом необходимости.
А галку Уведомления на e-mail при ответах поставить?
Виноват, каюсь, просто на других форумах я не ставил никаких галок, но уведомления приходили всегда. Видно там она стоит по умолчанию, что является более правильным. Зачем создавать тему и не быть в курсе событий? Поэтому я и не заходил, так как считал что ответов нет, иначе меня бы уведомили.
скажу: бесплатные раздел полистайте и посмотрите скольким и кто БЕЗВОЗДМЕЗНО помогает
Не спорю, но меня при первой же просьбе о помощи в бесплатном разделе отправили сразу же на фриланс, тыкнув, что путаю понятия "помогите" и "сделайте за меня". Хотя в принципе, любая помощь, это и есть работа сделанная за тебя, полностью или частично.
вообще-то такой выбор обычно не прописывается прямо в макросе (мало ли, количество возрастных групп изменится)
К этому коду приходится прибегать когда уже всё закончилось и ничего не изменится, чтобы вывести протокол хода соревнований. Он работает и меня устраивает как. А за ваш вариант спасибо. Надо будет попробовать. Тот код не от RAN. Как раз с ним мы вели переговоры. Он запросил за него 1000 р., но его немного опередили. На другом форуме помогли, предложив свой вариант. Именно помогли, безвозмездно, не тыча на всякие понятия... Я не против оплаты, если помощь действительно занимает много времени. Мне несколько раз помогали в более серьёзных вопросах, и я сам после предлагал как-то компенсировать затраты в знак благодарности, но человек отказался, не видя в этом необходимости.VanBlack
Неправда, просто при создании темы там в окне "Подписка на тему" в пункте "Методы оповещения" по умолчанию стоит - "Моментальное уведомление по электронной почте". Что кстати, неплохо бы сделать и здесь.
Неправда, просто при создании темы там в окне "Подписка на тему" в пункте "Методы оповещения" по умолчанию стоит - "Моментальное уведомление по электронной почте". Что кстати, неплохо бы сделать и здесь.VanBlack
Ну так и сделайте - Сергей же сказал, как. Раз это нужно именно вам. Другим, возможно, не нужно. Вы не задумываетесь о том, что если достаточно посещаемый форум начнёт массово производить рассылку писем, да ещё и с одного адреса - почтовики воспримут это как спам?
Тот код не от RAN. Как раз с ним мы вели переговоры. Он запросил
Ну, мне просто надо было убедиться. Потому что на тот код хотелось немного поругаться, а он был опубликован без указания авторства. Обижать же не хочется никого. А там просто имеется несколько огрехов (может быть, незаметных на первый взгляд, но могущих стать принципиальными) - чего в "платном" коде обычно стараются не допускать. Или оперативно устранять...
Ну так и сделайте - Сергей же сказал, как. Раз это нужно именно вам. Другим, возможно, не нужно. Вы не задумываетесь о том, что если достаточно посещаемый форум начнёт массово производить рассылку писем, да ещё и с одного адреса - почтовики воспримут это как спам?
Тот код не от RAN. Как раз с ним мы вели переговоры. Он запросил
Ну, мне просто надо было убедиться. Потому что на тот код хотелось немного поругаться, а он был опубликован без указания авторства. Обижать же не хочется никого. А там просто имеется несколько огрехов (может быть, незаметных на первый взгляд, но могущих стать принципиальными) - чего в "платном" коде обычно стараются не допускать. Или оперативно устранять...AndreTM
там просто имеется несколько огрехов (может быть, незаметных на первый взгляд, но могущих стать принципиальными) - чего в "платном" коде обычно стараются не допускать. Или оперативно устранять...
...ну укажите их, если это не трудно! Не хочется никого обижать, - укажите в личке.
там просто имеется несколько огрехов (может быть, незаметных на первый взгляд, но могущих стать принципиальными) - чего в "платном" коде обычно стараются не допускать. Или оперативно устранять...
...ну укажите их, если это не трудно! Не хочется никого обижать, - укажите в личке.VanBlack
Sub Протокол_поединков() Dim Sh As Worksheet, i As Long i = 1 Sheets("Протокол поединков").Cells.Clear For Each Sh In ThisWorkbook.Sheets If InStr(1, Sh.Name, "(") > 0 Then Sh.[A1:M39].Copy Sheets("Протокол поединков").Cells(i, 1) i = i + 39 End If Next Sh End Sub
[/vba]
- Sheets("Протокол поединков"). относится к ActiveWorkbook. Таким образом, возможна ситуация, когда коллекция воспримет в качестве родителя не ту книгу. - Наименование листа "Протокол поединков" используется несколько раз - можно вынести в переменную или параметр. Кроме того, как указано выше, обращение к листу прописано неоднозначно - вынести требуется именно объект-лист. - Sheets("Протокол поединков").Cells.Clear очищает всё содержимое, включая форматирование. Таким образом, после генерации протокола - придется производить дополнительное форматирование. Сюда же относится и перенос данных, начиная с первой строки листа-получателя - ведь, возможно, придется вставлять заголовок и т.д. - Условие If InStr(1, Sh.Name, "(") > 0 Then определяет лист с открывающей круглой скобкой в наименовании. В то же время, ТС указал: "имена которых содержат скобки", т.е. должна быть и закрывающая (причем, возможно, пАрная ). - Не произведено отключение .ScreenUpdating на время заполнения листа-получателя. - Возможно, исходные данные содержат формулы. Мало того, что на время копирования не отключен автоперерасчёт - можно было копировать в лист-получатель только значения, ведь мы строим отчёт. Хотя здесь нет однозначности - возможно, ТС хотел получить протокол именно со связанными ссылками. - Ну и можно было бы также вынести в переменную копируемый диапазон, контролировать значение i, etc... Но это я уже придираюсь
Ну, давайте посмотрим...
[vba]
Код
Sub Протокол_поединков() Dim Sh As Worksheet, i As Long i = 1 Sheets("Протокол поединков").Cells.Clear For Each Sh In ThisWorkbook.Sheets If InStr(1, Sh.Name, "(") > 0 Then Sh.[A1:M39].Copy Sheets("Протокол поединков").Cells(i, 1) i = i + 39 End If Next Sh End Sub
[/vba]
- Sheets("Протокол поединков"). относится к ActiveWorkbook. Таким образом, возможна ситуация, когда коллекция воспримет в качестве родителя не ту книгу. - Наименование листа "Протокол поединков" используется несколько раз - можно вынести в переменную или параметр. Кроме того, как указано выше, обращение к листу прописано неоднозначно - вынести требуется именно объект-лист. - Sheets("Протокол поединков").Cells.Clear очищает всё содержимое, включая форматирование. Таким образом, после генерации протокола - придется производить дополнительное форматирование. Сюда же относится и перенос данных, начиная с первой строки листа-получателя - ведь, возможно, придется вставлять заголовок и т.д. - Условие If InStr(1, Sh.Name, "(") > 0 Then определяет лист с открывающей круглой скобкой в наименовании. В то же время, ТС указал: "имена которых содержат скобки", т.е. должна быть и закрывающая (причем, возможно, пАрная ). - Не произведено отключение .ScreenUpdating на время заполнения листа-получателя. - Возможно, исходные данные содержат формулы. Мало того, что на время копирования не отключен автоперерасчёт - можно было копировать в лист-получатель только значения, ведь мы строим отчёт. Хотя здесь нет однозначности - возможно, ТС хотел получить протокол именно со связанными ссылками. - Ну и можно было бы также вынести в переменную копируемый диапазон, контролировать значение i, etc... Но это я уже придираюсь AndreTM
Skype: andre.tm.007 Donate: Qiwi: 9517375010
Сообщение отредактировал AndreTM - Вторник, 29.10.2013, 04:21
возможна ситуация, когда коллекция воспримет в качестве родителя не ту книгу
Думаю не так критично, т.к. работа будет производится в одной книге... 2-е, 3-е, 4-е и 5-е: по этим пунктам вроде проблем не возникало... Если возникнут, - обращусь именно к вам, если вы конечно не против... :-)
Возможно, исходные данные содержат формулы. Мало того, что на время копирования не отключен автоперерасчёт - можно было копировать в лист-получатель только значения, ведь мы строим отчёт. Хотя здесь нет однозначности - возможно, ТС хотел получить протокол именно со связанными ссылками
А вот по этому пункту действительно возникает проблемка, я сначала подумал что сам чего-то накосячил... Копируемые листы содержат формулы и в протоколе отображаются не верные значения. Хотя, как я понял, это касается только формул с абсолютными величинами (например =ЕСЛИ(B4<>"";СУММПРОИЗВ(($B$41:$L$74=B4)*($C$41:$M$74=1));""). Формулы с относительными величинами при копировании изменяются и значения в протоколе отображаются нормально. Попробую поменять абсолютные величины на относительные и посмотрю на результат. Если вы могли бы поправить, чтобы копировалось всё, кроме формул, - было бы здо'рово. Я бы конечно и сам поправил, - если бы знал как... :-)
возможна ситуация, когда коллекция воспримет в качестве родителя не ту книгу
Думаю не так критично, т.к. работа будет производится в одной книге... 2-е, 3-е, 4-е и 5-е: по этим пунктам вроде проблем не возникало... Если возникнут, - обращусь именно к вам, если вы конечно не против... :-)
Возможно, исходные данные содержат формулы. Мало того, что на время копирования не отключен автоперерасчёт - можно было копировать в лист-получатель только значения, ведь мы строим отчёт. Хотя здесь нет однозначности - возможно, ТС хотел получить протокол именно со связанными ссылками
А вот по этому пункту действительно возникает проблемка, я сначала подумал что сам чего-то накосячил... Копируемые листы содержат формулы и в протоколе отображаются не верные значения. Хотя, как я понял, это касается только формул с абсолютными величинами (например =ЕСЛИ(B4<>"";СУММПРОИЗВ(($B$41:$L$74=B4)*($C$41:$M$74=1));""). Формулы с относительными величинами при копировании изменяются и значения в протоколе отображаются нормально. Попробую поменять абсолютные величины на относительные и посмотрю на результат. Если вы могли бы поправить, чтобы копировалось всё, кроме формул, - было бы здо'рово. Я бы конечно и сам поправил, - если бы знал как... :-)