помогите доработать макрос недоделанный (криворабочий) макрос в файле примере - с названием "добавление" необходимо добавить строки из листа"добавить" в лист "список" в определенное место(определенный город) - значения в столбцах А:А на обеих листах имеют формат ИИххх и "*" (звездочка - ее мы не трогаем) - т.е. нужно сравнить по первым двум цифрам значения с листа "добавление" с листом "список" при совпадении добавить ниже строку в лист "список" и скопировать туда значения из листа "добавление" - 1 столбец в 1 столбец и из 3 во 2 - далее в лист "добавлении" в обрабатываемую строку поставить отметку о выполнении
помогите доработать макрос недоделанный (криворабочий) макрос в файле примере - с названием "добавление" необходимо добавить строки из листа"добавить" в лист "список" в определенное место(определенный город) - значения в столбцах А:А на обеих листах имеют формат ИИххх и "*" (звездочка - ее мы не трогаем) - т.е. нужно сравнить по первым двум цифрам значения с листа "добавление" с листом "список" при совпадении добавить ниже строку в лист "список" и скопировать туда значения из листа "добавление" - 1 столбец в 1 столбец и из 3 во 2 - далее в лист "добавлении" в обрабатываемую строку поставить отметку о выполненииluny
Честно говоря, разбираться в Вашем потоке мыслей нет никакого желания (уж извините). Если ВЫ внятно и с соблюдением правил русской грамматики и пунктуации изложите суть проблемы, то, наверное, можно будет и попытаться разобраться. Объективно подходя к вопросу, Вы сами-то вот так с ходу, с первого прочтения и не морща долго извилины, можете понять, что написано в первом посте? Я раза три прочёл... Шараду не разгадал и забросил это дело. Рассмотрение файла и кодов процедур тоже ничего не прояснило кроме того, что процедуры, похоже, писали не Вы (а если я не прав, то объясните, пожалуйста, назначение модуля UserForm1 и почему у Вас использован принцип "одна процедура-один модуль"?). Советы, не вникая в суть, могут быть только такие: 1. Используйте декларацию Option Explicit и объявляйте переменные в процеурах. Иначе замучаетесь вылавливать ошибки. 2. Символ * используется как синоним "любая последовательность символов". Поэтому когда Вы этот символ используете на листе как метку, а потом задаёте её в поиск в процедуре, находится ВСЁ, а не те строки, где есть "звёздочка"
Честно говоря, разбираться в Вашем потоке мыслей нет никакого желания (уж извините). Если ВЫ внятно и с соблюдением правил русской грамматики и пунктуации изложите суть проблемы, то, наверное, можно будет и попытаться разобраться. Объективно подходя к вопросу, Вы сами-то вот так с ходу, с первого прочтения и не морща долго извилины, можете понять, что написано в первом посте? Я раза три прочёл... Шараду не разгадал и забросил это дело. Рассмотрение файла и кодов процедур тоже ничего не прояснило кроме того, что процедуры, похоже, писали не Вы (а если я не прав, то объясните, пожалуйста, назначение модуля UserForm1 и почему у Вас использован принцип "одна процедура-один модуль"?). Советы, не вникая в суть, могут быть только такие: 1. Используйте декларацию Option Explicit и объявляйте переменные в процеурах. Иначе замучаетесь вылавливать ошибки. 2. Символ * используется как синоним "любая последовательность символов". Поэтому когда Вы этот символ используете на листе как метку, а потом задаёте её в поиск в процедуре, находится ВСЁ, а не те строки, где есть "звёздочка"Alex_ST
Alex_ST, честно говоря - вы тоже не бог грамматики... мне это например не очень мешало понять ваши мысли... если б извилины не надо было морщить то наверное и вопроса не было бы - правда ведь? - а если оч хочется помочь но что то непонятно, можно ведь и вопрос задать...
суть задачи : сравнить- добавить пустую строку - скопировать...
и если это допрос и эти вопросы помогут ускорить решение задачи то: - UserForm1 - пустая.. я ее не трогал... или может трогал но не суть - одна процедура-один модуль - мне так удобнее! - файл над которым производятся действия достаточно ответственный - и иногда процедуры надо выполнять в определенной последовательности - один макрос сделать помогли - за чт спс шаленому порося - остальное мое (а это целая 1 строка в каждом макросе :-)) - если вы были внимательны то в макросе с назаванием "добавление" (это тот который мне необходимо доработать если вы вдруг запутались) у меня написано " ~* " а не просто звездочка - такое сочетание ловит именно звездочку... с Ув. Я
Alex_ST, честно говоря - вы тоже не бог грамматики... мне это например не очень мешало понять ваши мысли... если б извилины не надо было морщить то наверное и вопроса не было бы - правда ведь? - а если оч хочется помочь но что то непонятно, можно ведь и вопрос задать...
суть задачи : сравнить- добавить пустую строку - скопировать...
и если это допрос и эти вопросы помогут ускорить решение задачи то: - UserForm1 - пустая.. я ее не трогал... или может трогал но не суть - одна процедура-один модуль - мне так удобнее! - файл над которым производятся действия достаточно ответственный - и иногда процедуры надо выполнять в определенной последовательности - один макрос сделать помогли - за чт спс шаленому порося - остальное мое (а это целая 1 строка в каждом макросе :-)) - если вы были внимательны то в макросе с назаванием "добавление" (это тот который мне необходимо доработать если вы вдруг запутались) у меня написано " ~* " а не просто звездочка - такое сочетание ловит именно звездочку... с Ув. Яluny
суть задачи : сравнить- добавить пустую строку - скопировать...
ну, если Вы считаете, что такого объяснения вполне достаточно для кого-нибудь, кроме Вас, ждите ответов и дальше. Хотя, судя по отсутствию наплыва энтузиастов Вам помогать, ждать Вы будете долго.
А вот Up'ать топик не стоит. Можно от модераторов и замечание получить. И продолжать пытаться разобраться в Вашей проблеме я больше не собираюсь. Ведь совет-то в конце-концов нужен Вам, а не мне. Поэтому мне можете здесь не отвечать, т.к. от подписки на топик я отписываюсь (Вы уж извините, пожалуйста за безграмотность - я не бог грамматики, хотя и знаю разницу между строчными и прописными буквами в отличие от Вас).
суть задачи : сравнить- добавить пустую строку - скопировать...
ну, если Вы считаете, что такого объяснения вполне достаточно для кого-нибудь, кроме Вас, ждите ответов и дальше. Хотя, судя по отсутствию наплыва энтузиастов Вам помогать, ждать Вы будете долго.
А вот Up'ать топик не стоит. Можно от модераторов и замечание получить. И продолжать пытаться разобраться в Вашей проблеме я больше не собираюсь. Ведь совет-то в конце-концов нужен Вам, а не мне. Поэтому мне можете здесь не отвечать, т.к. от подписки на топик я отписываюсь (Вы уж извините, пожалуйста за безграмотность - я не бог грамматики, хотя и знаю разницу между строчными и прописными буквами в отличие от Вас).Alex_ST
ну, если Вы считаете, что такого объяснения вполне достаточно для кого-нибудь, кроме Вас, ждите ответов и дальше.
суть проблемы - как можно точнее - как можно детальнее изложена в первом посте - как объяснить иначе я не представляю возможным.. я не отчаиваюсь - может таких проблема сложная... пройдет неделя и сам ее осилю может
ну, если Вы считаете, что такого объяснения вполне достаточно для кого-нибудь, кроме Вас, ждите ответов и дальше.
суть проблемы - как можно точнее - как можно детальнее изложена в первом посте - как объяснить иначе я не представляю возможным.. я не отчаиваюсь - может таких проблема сложная... пройдет неделя и сам ее осилю может
т.е. нужно сравнить по первым двум цифрам значения с листа "добавление" с листом "список" при совпадении добавить ниже строку в лист "список" и скопировать туда значения из листа "добавление" - 1 столбец в 1 столбец и из 3 во 2 - далее в лист "добавлении" в обрабатываемую строку поставить отметку о выполнении
Вот это попробуйте еще раз рассказать. и это... если с запятыми напряг - то каждое действие на новой строчке.
сходу, вот это: If .Cells(rw2, 1) <> "" And .Cells(rw2, 1) <> "~*" Then заменить на If .Cells(rw2, 1) <> "" And .Cells(rw2, 1) <> "*" Then в данной интерпретации сравнивает именно со * и не понятно, с какого листа на какой вставлять/добавлять.
т.е. нужно сравнить по первым двум цифрам значения с листа "добавление" с листом "список" при совпадении добавить ниже строку в лист "список" и скопировать туда значения из листа "добавление" - 1 столбец в 1 столбец и из 3 во 2 - далее в лист "добавлении" в обрабатываемую строку поставить отметку о выполнении
Вот это попробуйте еще раз рассказать. и это... если с запятыми напряг - то каждое действие на новой строчке.
сходу, вот это: If .Cells(rw2, 1) <> "" And .Cells(rw2, 1) <> "~*" Then заменить на If .Cells(rw2, 1) <> "" And .Cells(rw2, 1) <> "*" Then в данной интерпретации сравнивает именно со * и не понятно, с какого листа на какой вставлять/добавлять.Michael_S
необходимо добавить строки из листа"добавить" в лист "список" в определенное место(определенный город) - значения в столбцах А:А на обеих листах имеют формат ИИххх и "*" (звездочка - ее мы не трогаем)
нужно 1) сравнить по первым двум цифрам значения с листа "добавление" с листом "список" 2) при совпадении добавить ниже строку в лист "список" 3) скопировать значения из листа "добавление" 1 столбец в 1 столбец 3 ...........во 2 4) в лист "добавлении" в обрабатываемую строку поставить отметку о выполнении
сочетание ~* работало...
необходимо добавить строки из листа"добавить" в лист "список" в определенное место(определенный город) - значения в столбцах А:А на обеих листах имеют формат ИИххх и "*" (звездочка - ее мы не трогаем)
нужно 1) сравнить по первым двум цифрам значения с листа "добавление" с листом "список" 2) при совпадении добавить ниже строку в лист "список" 3) скопировать значения из листа "добавление" 1 столбец в 1 столбец 3 ...........во 2 4) в лист "добавлении" в обрабатываемую строку поставить отметку о выполнении
upd ради интереса в модуле листа "добавление" проверьте такой макрос: Sub test() If [a6] = "*" Then MsgBox ("*") If [a6] = "~*" Then MsgBox ("~*") End Sub
естественоо ответ бедет "*" - вопрос стоит или "любой символ" или "знак *" поменяйте строки местами и ответ будет "~*" - наберите Ctrl+F и переспросите "~*" и "*" - в 1 случаее найдет именно символ "*" во 2 любой символ
upd ради интереса в модуле листа "добавление" проверьте такой макрос: Sub test() If [a6] = "*" Then MsgBox ("*") If [a6] = "~*" Then MsgBox ("~*") End Sub
естественоо ответ бедет "*" - вопрос стоит или "любой символ" или "знак *" поменяйте строки местами и ответ будет "~*" - наберите Ctrl+F и переспросите "~*" и "*" - в 1 случаее найдет именно символ "*" во 2 любой символluny
Это верно для поиска (метод Find, и еще Like, но там не тильда а в квадратных скобках "(*)" ), в данном контексте так не работает, здесь сравнивается именно *.
А вот по "добавляем, копируем" я так и не понял. Создайте лист и покажите, что должно получиться. Благо, пример у вас небольшой.
Это верно для поиска (метод Find, и еще Like, но там не тильда а в квадратных скобках "(*)" ), в данном контексте так не работает, здесь сравнивается именно *.
А вот по "добавляем, копируем" я так и не понял. Создайте лист и покажите, что должно получиться. Благо, пример у вас небольшой.Michael_S
Сообщение отредактировал Michael_S - Среда, 07.05.2014, 23:10
надо! - но не знаю стоит ли - в листе список * есть и макрос работает.... - поэтому и не уверен?
по решению - работает! только необходимо в листе "добавление" добавить отметку о выполнении т.е. после копирования строки в 4 столбце присвоить "ок" или что то такое - во первых для контроля выполнения во вторых для того чтоб потом можно было отсортировать добавленное/пропущенное
надо! - но не знаю стоит ли - в листе список * есть и макрос работает.... - поэтому и не уверен?
по решению - работает! только необходимо в листе "добавление" добавить отметку о выполнении т.е. после копирования строки в 4 столбце присвоить "ок" или что то такое - во первых для контроля выполнения во вторых для того чтоб потом можно было отсортировать добавленное/пропущенноеluny
Michael_S, как вам объяснить если вместо номера телефона в справочнике стоит * значит соединение с абонентом производится через секретаря-телефониста или телефон стоит у дежурного и он позовет "кого надо" - такие абоненты есть в каждом "городе" и так как их не отличишь мы их вообще исключаем из обработки макросом а для того чтоб это было наверняка и стоит проверка... - если тот код что вы написали не учитывает " * " не в одном ни во втором листе то хорошо - если нет то нужно исключить (в смысле добавить проверку и на второй лист)
отметка о выполнении нужна для того чтоб можно было увидеть какая строка была добавлена или не добавлена по какой либо причине - может какая то ячейка /номер например была отформатирована как текст и ее "пропустил" макрос или та же звездочка добавилась может в номере опечатка и такого "города" нет в списке - что бы можно потом отсортировать лист "добавить" по этой отметке и вручную добавить не добавленное и отследить добавленное - как то так
Michael_S, как вам объяснить если вместо номера телефона в справочнике стоит * значит соединение с абонентом производится через секретаря-телефониста или телефон стоит у дежурного и он позовет "кого надо" - такие абоненты есть в каждом "городе" и так как их не отличишь мы их вообще исключаем из обработки макросом а для того чтоб это было наверняка и стоит проверка... - если тот код что вы написали не учитывает " * " не в одном ни во втором листе то хорошо - если нет то нужно исключить (в смысле добавить проверку и на второй лист)
отметка о выполнении нужна для того чтоб можно было увидеть какая строка была добавлена или не добавлена по какой либо причине - может какая то ячейка /номер например была отформатирована как текст и ее "пропустил" макрос или та же звездочка добавилась может в номере опечатка и такого "города" нет в списке - что бы можно потом отсортировать лист "добавить" по этой отметке и вручную добавить не добавленное и отследить добавленное - как то такluny