Форум "Visual Basic" (архив)
Все о Бейсике
|
В ф-ции поиска есть условие частичного вхождения искомого: Sub Макрос1() Cells.Find(What:="34", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .Activate End Sub отлично находит "34" в ячейке с "12345" |
|
> Если можно, ответ в мыло... к сожалению, многим просто лень мылить.... лучше раз в день заглядывай.... |
|
А мыла то и нету! |
|
#4
Змитер
25.07.03 09:14:48
Мыло есть! Надо только на "Змитер" навести курсор Спасибо, будем пытаться... |
|
> Змитер 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
Да, наводить пробовал, потому и был удивлен той фразой... |
|
> Змитер 25.07.03 12:18 Ну и че там за мало? гы. Это твой IP, к мылу отношения не имеет! зы. вайл (найдено) - ищем дальще, если не найдено - вываливаемся нафик. |
|
> Паша © 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 |
|
> Змитер 25.07.03 13:17 > у меня при наведении на Змитер появляется Ага, эт я тогда здря раскричался! У меня клиент не показывает. Да и по мылу писать влом. |
|
это так поиск в делфях выглядит: found:=(WorkSheet.Range['A1:Z100']).Find(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 - колонка. Запоминай первое вхождение и вперед! |
|
в Ехеле есть очень полезная штука, в которой можно много подсмотреть. Говоришь - начать запись макроса, делаешь приблизительные действия, которые хочешь получить, останавливаешь макрос и получаешь примерчик. Дюже пользительная вешь! |
|
#14
Змитер
25.07.03 12:59:12
Я в ВБА не так чтобы очень, а ты мне дельфи предлагаешь, которого я даже не видел Как эту хрень в ВБА замутить? |
|
Читаешь > Паша © 25.07.03 13:49:00, делашь макрос с поиском. Давишь Ф1. Читашь про Ранже. Поиск тебе ранже возвращает Алгоритм. Cуешь первый найденный ранже в переменную. Начинаешь искать дальше, пока следующий ранже не равен первому найденому. Конец цикла. Кажись, так. |
Тема находится в архиве
Написать ответ |
|
