Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Visual Basic" (архив)


Все о Бейсике


 #0  Змитер 24.07.03 09:31:32 - 25.07.03 13:10:04

Как организовать воиск в Ёкселе через VBA с формированием...



Сабж... списка.
Только искать надо в диапазоне ячеек (вводить в поле поиска не полностью, а часть содержимого), с последующим копированием на другой лист всей строки с этой ячейкой.
Я все сделал, кроме поиска в части содержимого ячейки, и в справке по ВБА нашел поиск, но он работает с range и не возвращает адрес ячейки для копирования строки.

Если можно, ответ в мыло...

Цитата

 #1 Паша © 24.07.03 10:28:04

В ф-ции поиска есть условие частичного вхождения искомого:

Sub Макрос1()
    Cells.Find(What:="34", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
        .Activate
End Sub
отлично находит "34" в ячейке с "12345"
 #2 deep © 24.07.03 11:12:14

> Если можно, ответ в мыло...
к сожалению, многим просто лень мылить.... лучше раз в день заглядывай....  
 #3 Паша © 24.07.03 11:19:39

А мыла то и нету! Его, типа, надо угадать!
 #4  Змитер 25.07.03 09:14:48

Мыло есть!
Надо только на "Змитер" навести курсор

Спасибо, будем пытаться...
 #5 Паша © 25.07.03 09:54:11

> Змитер 25.07.03 10:14
Ну, навел, а там - ... Ты сам то пробовал наводить? Наводчик
 #6  Змитер 25.07.03 10:53:17

Да, работает!
Но вот проблема - как его остановить ?
Если делать через фор-некст, то он считает количество поисков ( в документе более 1000 позиций) и если найдено 2 значения, то он будет крутить еще долго и затем на 2-м листе формировать длинный ненужный список, а если через ду-луп while ..., то какой задать критерий остановки (ведь может быть 2 одинаковые записи).
Кстати, если потом вставить ActiveCell.EntireRow.Select для копирования на другой лист, то after:=ActiveCell не катит (поиск стоит на одном месте).
Кстати найденый мной ранее пример выглядел так (туда я в ду-луп добавил копирование и счетчик для формирования списка по порядку):
with range (...)
Set c = .Find(s, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
           Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
end with
 #7  Змитер 25.07.03 11:18:48

Да, наводить пробовал, потому и был удивлен той фразой...
 #8 Паша © 25.07.03 12:00:14

> Змитер 25.07.03 12:18 Ну и че там за мало? гы. Это твой IP, к мылу отношения не имеет!  

зы. вайл (найдено) - ищем дальще, если не найдено - вываливаемся нафик.
 #9 VictorT © 25.07.03 12:12:49

> Паша © 25.07.2003 13:00:00 Это в клиенте мыло не показывается... 419(собачка)tut.by
 #10  Змитер 25.07.03 12:17:58

Я в том плане говорил, что оно доходя до конца страницы, начинает ее снова, так вот как это оформить, что после конца списка, надо вываливаться нафиг.
Можно ли сделать проверку, что если адрес ячейки меньше предыдущего - то вон нахер на мороз ...
И вообще можно ли его заставить возвращать адрес текущей ячейки, не делая ее активной(или делая).

И есть ли в ВБА комманда типа row(..)copy / row(..).paste или range?

ЗЫ: у меня при наведении на Змитер появляется:
 419(собачка)tut.by
IE 6
 #11 Паша © 25.07.03 12:29:58

> Змитер 25.07.03 13:17 > у меня при наведении на Змитер появляется Ага, эт я тогда здря раскричался! У меня клиент не показывает. Да и по мылу писать влом.
 #12 Паша © 25.07.03 12:44:45

это так поиск в делфях выглядит:
      found:=(WorkSheet.Range['A1:Z100']).Fin­d(What := FieldName, lookAt :=1);
      //если нашли в шаблоне
      if (TVarData(Found).VDispatch<>nil) then
      begin
        if Found.Row>Row then Row:=Found.Row;
        nCol:=Found.Column;

Т.е. финд тебе возвращает объект типа Range, который имеет пропрети Row - строка и Column - колонка. Запоминай первое вхождение и вперед!
 #13 Паша © 25.07.03 12:49:07

в Ехеле есть очень полезная штука, в которой можно много подсмотреть. Говоришь - начать запись макроса, делаешь приблизительные действия, которые хочешь получить, останавливаешь макрос и получаешь примерчик. Дюже пользительная вешь!
 #14  Змитер 25.07.03 12:59:12

Я в ВБА не так чтобы очень, а ты мне дельфи предлагаешь, которого я даже не видел
Как эту хрень в ВБА замутить?
 #15 Паша © 25.07.03 13:10:04

Читаешь > Паша © 25.07.03 13:49:00, делашь макрос с поиском. Давишь Ф1. Читашь про Ранже. Поиск тебе ранже возвращает.
Алгоритм. Cуешь первый найденный ранже в переменную. Начинаешь искать дальше, пока следующий ранже не равен первому найденому. Конец цикла. Кажись, так.




  • Тема находится в архиве

    Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов