Страница: 1 |
Вопрос: Поиск ячейки и замена значения в строке листа | Добавлено: 23.02.06 09:56 |
Автор вопроса: ![]() |
Помогите, пожалуйста, с задачкой.
Как найти ячейку со значением, например, город, и очистить эту ячейку, а также зависимые с ней ячейки, расположенные на той же строке, что и найденная ячейка в диапазоне G8:G43 и E8:E43? Этот код очищает все найденные ячейки со значением город, но не очищает те ячейки, которые находятся в той строке, что и ячейка со значением город. Sub Поиск() Dim c As Range For Each c In [I8:I43] If c.Value Like "город" Then c.Value = "" End If Next End Sub Дополнительно Может быть так или есть код покрасивее? При этом остается проблема: если курсор не находится в ячейке диапазона I8:J20, появляется сообщение об ошибке. Ошибка появляется и тогда, когда в ячейках больше нет данных в диапазоне I8:J20. Как это все исправить? Public Sub Поиск2() Dim rng As Range Set rng = Range("I8:J20").Find(What:="город", After:=ActiveCell, LookIn:=xlValues, _ MatchCase:=True) Range("I8:J20").FindNext(After:=ActiveCell).Activate If Not (rng Is Nothing) Then Cells(ActiveCell.Row, ActiveCell.Column - 1).Select ActiveCell = "" Cells(ActiveCell.Row, ActiveCell.Column - 1).Select ActiveCell = "" Cells(ActiveCell.Row, ActiveCell.Column + 4).Select ActiveCell = "" Else MsgBox "Не найдено значение" End If End Sub |
Ответы | Всего ответов: 7 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #1 | Добавлено: 23.02.06 16:22 |
Насколько я тебя понял, так это тебе должно подойти:
Dim c As Range
For Each c In [E8:E43] If UCase(c.Value) = "ГОРОД" Then Rows(c.Row).ClearContents Next For Each c In [G8:G43] If UCase(c.Value) = "ГОРОД" Then Rows(c.Row).ClearContents Next |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #2 | Добавлено: 23.02.06 16:30 |
Спасибо, попробую. Но у меня появился еще один вопрос. Сформулирую, опубликую. Поможешь? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 24 Ответов: 332 |
Профиль | Цитата | #3 | Добавлено: 23.02.06 16:49 |
Сформулирую, опубликую. Поможешь?
Сформулируй, опубликуй. Помогу ![]() |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #4 | Добавлено: 23.02.06 17:24 |
Работает неплохо. Я немного изменил код, а именно убрал часть кода с диапазоном поиска I8:I43 (поиск именно в этом диапазоне). Но мне нужно, чтобы найденная запись удалялась не во всей строке Row, а только в столбцах рядом. Т.е. поиск происходит в диапазоне I8:I43 и при нахождении в нем значения "ГОРОД", это значение удаляется не только в найденых ячейках диапазона I8:I43, но и значения в диапазонах E8:E43 и G8:G43, которые связаны со значением "город", т.е. соответственно это будет в столбце G значение "телефон", а в столбце E сумма в грн.
Я бы приложил свой пример в Excel'e, но не пойму как это на этом форуме делается? E G I 8 4,20 грн. Телефон город 9 3,00 грн. Канцтовары копии 10 0,75 грн. Канцтовары копии 11 4,20 грн. Канцтовары почта 12 3,00 грн. Транспорт талоны 13 5,85 грн. Телефон город 14 22,04 грн. Канцтовары почта 15 5,85 грн. Канцтовары копии 16 4,35 грн. Канцтовары почта 17 2,00 грн. Транспорт талоны 18 2,00 грн. Транспорт талоны 19 6,00 грн. Транспорт метро 20 6,00 грн. Телефон город Это твой уменьшенный код. ![]() For Each c In [I8:I43] If UCase(c.Value) = "ГОРОД" Then Rows(c.Row).ClearContents Next |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #5 | Добавлено: 23.02.06 17:26 |
E G I
8 4,20 грн. Телефон город 9 3,00 грн. Канцтовары копии 10 0,75 грн. Канцтовары копии 11 4,20 грн. Канцтовары почта 12 3,00 грн. Транспорт талоны 13 5,85 грн. Телефон город 14 22,04 грн. Канцтовары почта 15 5,85 грн. Канцтовары копии 16 4,35 грн. Канцтовары почта 17 2,00 грн. Транспорт талоны 18 2,00 грн. Транспорт талоны 19 6,00 грн. Транспорт метро 20 6,00 грн. Телефон город |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #6 | Добавлено: 23.02.06 18:14 |
khall
http://bbs.vbstreets.ru/viewtopic.php?t=23554 |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 6 |
Профиль | Цитата | #7 | Добавлено: 23.02.06 18:32 |
Я там тоже начал сегодня бывать!!! И кажется, что этот вариант неплохо работает! |
Страница: 1 |
|