Sub ttt() For Each cell In Range("J2:J11") If cell.Value = "7777777" Or cell.Value = "(1111111" Or cell.Value = "2223333" Or cell.Value = "4444444" Or cell.Value = "5556666" Then cell.Offset(, -4).ClearContents cell.Offset(, -2).ClearContents End If Next End Sub
[/vba]
Держи студент))) учись хорошо!
[vba]
Код
Sub ttt() For Each cell In Range("J2:J11") If cell.Value = "7777777" Or cell.Value = "(1111111" Or cell.Value = "2223333" Or cell.Value = "4444444" Or cell.Value = "5556666" Then cell.Offset(, -4).ClearContents cell.Offset(, -2).ClearContents End If Next End Sub
Файл приложил, код подправил. В столбец X прописываете все значения который ищите.
[vba]
Код
Sub ttt() For Each cell In Range("J2:J11") If Range("X:X").Find(cell.Value) Is Nothing Then Else cell.Offset(, -4).ClearContents cell.Offset(, -2).ClearContents End If Next End Sub
[/vba]
Файл приложил, код подправил. В столбец X прописываете все значения который ищите.
[vba]
Код
Sub ttt() For Each cell In Range("J2:J11") If Range("X:X").Find(cell.Value) Is Nothing Then Else cell.Offset(, -4).ClearContents cell.Offset(, -2).ClearContents End If Next End Sub
DJ_Marker_MC ты чуть меня не понял за это спасибо канечно но мне на листе не чего нельзя добавлять список нужно задавать в макросе но он большой около 50 значений
DJ_Marker_MC ты чуть меня не понял за это спасибо канечно но мне на листе не чего нельзя добавлять список нужно задавать в макросе но он большой около 50 значенийstudent-ua
student-ua, А как насчет вынести на другой лист и сделать его VeryHidden? и тянуть оттуда данные? Просто список в 50 значений мне кажется немного глупо впихивать в макрос.
student-ua, А как насчет вынести на другой лист и сделать его VeryHidden? и тянуть оттуда данные? Просто список в 50 значений мне кажется немного глупо впихивать в макрос.DJ_Marker_MC
DJ_Marker_MC давай брать данные из другого файла (c:\KOD.xls) список из которого нужно брать значения А1 "KOD" A2 777777 A3 555555 .... и так далее так получется уневерсальная прога с пополнением списка. только когда запускаем макрос файл KOD.xls чтобы не открвывался а из него только брало значения и все.
DJ_Marker_MC давай брать данные из другого файла (c:\KOD.xls) список из которого нужно брать значения А1 "KOD" A2 777777 A3 555555 .... и так далее так получется уневерсальная прога с пополнением списка. только когда запускаем макрос файл KOD.xls чтобы не открвывался а из него только брало значения и все.student-ua
student-ua, то, что Вы предлагаете, как раз и есть очень не универсальное решение, т.к. при подтягивании данных из внешних файлов приходится в коде прописывать их полный путь, а при переносе с машину на машину путь может меняться и код работать перестанет если его соответствующим образом не исправить. А это очень не удобно. DJ_Marker_MC Вам дело говорит:
Тогда не будет никаких проблем с размещением данных. А докопаться до "шибко заныканного" листа сможет только тот, кто о его существовании знает, да и к тому же умеет пользоваться VBE, т.к. только оттуда можно лист сделать видимым. Та что это как раз и есть
student-ua, то, что Вы предлагаете, как раз и есть очень не универсальное решение, т.к. при подтягивании данных из внешних файлов приходится в коде прописывать их полный путь, а при переносе с машину на машину путь может меняться и код работать перестанет если его соответствующим образом не исправить. А это очень не удобно. DJ_Marker_MC Вам дело говорит:
Тогда не будет никаких проблем с размещением данных. А докопаться до "шибко заныканного" листа сможет только тот, кто о его существовании знает, да и к тому же умеет пользоваться VBE, т.к. только оттуда можно лист сделать видимым. Та что это как раз и есть
Alex_ST, Я так думаю что student-ua, реальный студент и предполагаю что задание от препода. Я так понимаю тут нужно реально через создание библиотеки/массива (в чем я не силен, не даются они мне никак). Так что или лист veryhidden или если кто то поможет с массивом
Alex_ST, Я так думаю что student-ua, реальный студент и предполагаю что задание от препода. Я так понимаю тут нужно реально через создание библиотеки/массива (в чем я не силен, не даются они мне никак). Так что или лист veryhidden или если кто то поможет с массивомDJ_Marker_MC
DJ_Marker_MC, пишем на лист, собираем в строку через запятую (при нужде - с кавычками), копируем, пихаем строку в Array в коде. Кому не лень, может проделать. А далее - что с листа массив тянуть, что из кода.
DJ_Marker_MC, пишем на лист, собираем в строку через запятую (при нужде - с кавычками), копируем, пихаем строку в Array в коде. Кому не лень, может проделать. А далее - что с листа массив тянуть, что из кода.RAN
Универсальный вариант такой - этот список замен держать в файле с макросом, и лист можно не скрывать. А макросом обрабатывать активный лист или выделенный диапазон любого другого файла.
Универсальный вариант такой - этот список замен держать в файле с макросом, и лист можно не скрывать. А макросом обрабатывать активный лист или выделенный диапазон любого другого файла.Hugo
Андрей, я в таких случаях стринги-элементы массива сначала набиваю в ячейках листа, а потом их формулой сцепляю, предварительно обрамив в служебном столбце кавычками и запятыми. Очень просто получается. Вот только я не уверен, что student-ua умеет сцеплять более 30 значений
Андрей, я в таких случаях стринги-элементы массива сначала набиваю в ячейках листа, а потом их формулой сцепляю, предварительно обрамив в служебном столбце кавычками и запятыми. Очень просто получается. Вот только я не уверен, что student-ua умеет сцеплять более 30 значений Alex_ST
Ну да, практически то же самое. Извини, не внимательно прочитал. Но всё равно, интересно, может топик-стартер конкатенацию через амперсанд делать? (Только не поймите меня не правильно, никакой пошлости )
Ну да, практически то же самое. Извини, не внимательно прочитал. Но всё равно, интересно, может топик-стартер конкатенацию через амперсанд делать? (Только не поймите меня не правильно, никакой пошлости )Alex_ST
Sub длянедлинных() Dim arr arr = Split("qwe e4rt ry tu ti yi yi") End Sub
Sub копипаструлит() Dim s$, arr s = "qwe" s = s & " " & "e4rt" s = s & " " & "ry" s = s & " " & "tu" s = s & " " & "ti" s = s & " " & "yi" s = s & " " & "yi" arr = Split(s) End Sub
[/vba]
Ещё варианты: [vba]
Код
Sub длянедлинных() Dim arr arr = Split("qwe e4rt ry tu ti yi yi") End Sub
Sub копипаструлит() Dim s$, arr s = "qwe" s = s & " " & "e4rt" s = s & " " & "ry" s = s & " " & "tu" s = s & " " & "ti" s = s & " " & "yi" s = s & " " & "yi" arr = Split(s) End Sub
Sub ttt() arr = Array("7777777", "1111111", "2223333", "4444444","5556666") a = UBound(arr)
For Each cell In Range("J2:J11") For i = 0 To a If cell.Value = arr(i) Then cell.Offset(, -4).ClearContents cell.Offset(, -2).ClearContents End If Next i Next End Sub
[/vba]
Я так понял студенту нужно так:
[vba]
Код
Sub ttt() arr = Array("7777777", "1111111", "2223333", "4444444","5556666") a = UBound(arr)
For Each cell In Range("J2:J11") For i = 0 To a If cell.Value = arr(i) Then cell.Offset(, -4).ClearContents cell.Offset(, -2).ClearContents End If Next i Next End Sub
[/vba]тогда наверняка на Option Base 1 не напорешься (никогда не могу запомнить, с чего считается массив, заданный как arr = Array("7777777", "1111111", "2223333", "4444444","5556666") и влияет ли эта декларация на него)
------------------------ К стати, сейчас проверил - не влияет. И так, и так с 0 считает
только лучше писАть [vba]
Код
For i= lbound(arr) to ubound(arr)
[/vba]тогда наверняка на Option Base 1 не напорешься (никогда не могу запомнить, с чего считается массив, заданный как arr = Array("7777777", "1111111", "2223333", "4444444","5556666") и влияет ли эта декларация на него)
------------------------ К стати, сейчас проверил - не влияет. И так, и так с 0 считаетAlex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 06.05.2014, 14:00
а никто и не спорит, что через Split проще получается, а через амперсанд на листе - ещё удобнее особенно при больших массивах. (я так понимаю, что у всех время обеденного бутерброда с приправой из VBA настало? )
а никто и не спорит, что через Split проще получается, а через амперсанд на листе - ещё удобнее особенно при больших массивах. (я так понимаю, что у всех время обеденного бутерброда с приправой из VBA настало? )Alex_ST