Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Поиск ячейки и замена значения в строке листа Добавлено: 23.02.06 09:56  

Автор вопроса:  khall
Помогите, пожалуйста, с задачкой.
Как найти ячейку со значением, например, город, и очистить эту ячейку, а также зависимые с ней ячейки, расположенные на той же строке, что и найденная ячейка в диапазоне 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
Автор ответа:
 SerJ



Вопросов: 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
Автор ответа:
 khall



Вопросов: 2
Ответов: 6
 Профиль | | #2 Добавлено: 23.02.06 16:30
Спасибо, попробую. Но у меня появился еще один вопрос. Сформулирую, опубликую. Поможешь?

Ответить

Номер ответа: 3
Автор ответа:
 SerJ



Вопросов: 24
Ответов: 332
 Профиль | | #3 Добавлено: 23.02.06 16:49
Сформулирую, опубликую. Поможешь?

Сформулируй, опубликуй. Помогу ;)

Ответить

Номер ответа: 4
Автор ответа:
 khall



Вопросов: 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 грн. Телефон город

Это твой уменьшенный код.

    ;Dim c As Range
    For Each c In [I8:I43]
        If UCase(c.Value) = "ГОРОД" Then Rows(c.Row).ClearContents
    Next

Ответить

Номер ответа: 5
Автор ответа:
 khall



Вопросов: 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
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #6 Добавлено: 23.02.06 18:14
khall
http://bbs.vbstreets.ru/viewtopic.php?t=23554

Ответить

Номер ответа: 7
Автор ответа:
 khall



Вопросов: 2
Ответов: 6
 Профиль | | #7 Добавлено: 23.02.06 18:32
Я там тоже начал сегодня бывать!!! И кажется, что этот вариант неплохо работает!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам