|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
в каждом листе(всего их 4) в первой ячейке стойт число "1" в след(нижний) ячейке "2" и т.д ... до 20, но среди них встречается еще одна "2". Нужно ее "переставить"(в соседний столбец) из списка. как написать используя sheets(i) и findnext help(из excel.xls) хорошо прочитал, но трудно через неё составить свой код и там не указан "второй по счету findnext" если решу, напишу... заранее спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 16:01 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85там не указан "второй по счету findnext" если запустить два раза - будет второй по счету. а вообще - давай конкретику, что не получается, а то писать за тебя всю программу, как видно, ни у кого желание не возникло. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2011, 20:06 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Shocker.Pro="если запустить два раза - будет второй по счету" нужно именно без "запустить два раза " то что есть: Worksheets(i).Range("a1:a10").FindNext(2, LookIn:=xlValues). ' must be findnext(2-ой по счету) Set x = found.Row 'must be ~ foundnext.adress Set y = found.Column 'must be ~ foundnext.column Cells(x, y).Cut Cells(B1).Paste _______________ правильные(работающие) коды: Range("a1:a10").Find("2", LookIn:=xlFormulas).Activate Cells.FindNext(After:=ActiveCell).Activate __ comment: при "бегущем" Worksheets(i) наш activate не уместен ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 08:23 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85нужно именно без "запустить два раза "это что, такое условие задачи? Почему нельзя? justice85правильные(работающие) коды: Range("a1:a10").Find("2", LookIn:=xlFormulas).Activate Cells.FindNext(After:=ActiveCell).Activate __ comment: при "бегущем" Worksheets(i) наш activate не уместен Ну правильно - так правильно. Просто не надо использовать Activate Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 09:22 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Спасибо за After:=found "Shocker.Pro как теперь понимать то что он находит т.е. как понимать found (англ.перевод знаю) как скорректировать?: found.cut found.Paste Destination:=Worksheets(i).Range("B1") еррор: object required ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 10:21 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85Спасибо за After:=found "Shocker.Pro как теперь понимать то что он находит т.е. как понимать found (англ.перевод знаю) как скорректировать?: found.cut found.Paste Destination:=Worksheets(i).Range("B1") еррор: object required Может следовало бы сначала изучить основы программирования и языка? found - это переменная, которую я сам и объявил. Я мог назвать ее "хрен" - это не меняет сути дела. Тип этой переменной диапазон ячеек. В данном случае - найденный. Copy/Paste не стоит использовать для таких целей - зачем буфер обмена забивать? Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 10:25 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
по поводу found, вообще хотел написать: "как глубже понять объект found, что можно с ней "натворить" "(ну ладно, я сам ее точнее изучу) мне таки нужно узнать при, скажем, findnext(четвертый по счету) то будет так?: Set found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas) Set found = Worksheets(i).Cells.FindNext(After:=found) Set found = Worksheets(i).Cells.FindNext(After:=found) Set found = Worksheets(i).Cells.FindNext(After:=found) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 13:06 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85по поводу found, вообще хотел написать: "как глубже понять объект found, что можно с ней "натворить" "(ну ладно, я сам ее точнее изучу) еще раз - found - это произвольное название переменной. Изучать надо Range - это основной объект при работе с экселем. Он представляет собой диапазон ячеек (в частном случае - одну ячейку). В данном случае ссылку на ячейку возвращает метод Find[Next] - то есть после выполнения Find[Next] в переменной оказывается ссылка на найденную ячейку. justice85мне таки нужно узнать при, скажем, findnext(четвертый по счету) то будет так?: Set found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas) Set found = Worksheets(i).Cells.FindNext(After:=found) Set found = Worksheets(i).Cells.FindNext(After:=found) Set found = Worksheets(i).Cells.FindNext(After:=found) да, в простом случае можно использовать всякие изощрения, но в данном случае в них нет смысла ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 13:22 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Sub SP() Dim found As Range Set found = Worksheets(1).Range("a1:a10").Find("2", LookIn:=xlFormulas) Set found = Worksheets(1).Cells.FindNext(After:=found) Worksheets(1).Range("B1") = found End Sub F5 run-time error 5 invalid procedure call or argument причем если этот же 4-х строчный код запустить в новом 1.xls файле, то действительно переставляет в B1 вторую двойку ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 13:44 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85Sub SP() Dim found As Range Set found = Worksheets(1).Range("a1:a10").Find("2", LookIn:=xlFormulas) Set found = Worksheets(1).Cells.FindNext(After:=found) Worksheets(1).Range("B1") = found End Sub А не пора ли уже прочитать правила форума и наконец начать оформлять правильно код (ну хотя бы посмотреть, как я это делаю) justice85F5 run-time error 5 invalid procedure call or argument причем если этот же 4-х строчный код запустить в новом 1.xls файле, то действительно переставляет в B1 вторую двойку Стало быть код правильный. при F5 курсор должен стоять внутри процедуры ну или выложи файл, в котором не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 14:04 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
src файл src ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 14:21 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Так это. В твоем файле двойки нет вообще. Первый поиск ее не находит. Соответственно, на втором поиске возникает ошибка, так как found=Nothing в этот момент. Если предполагаются такие ситуации, естественно, нужно вводить проверки после поисков, а нашлось ли чего либо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 15:05 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Верно. на счет "after:=found" в хелпе то же есть, просто там выражение "Set c = .FindNext(c)" казалось как бесконечный цикл. Ну все вроде: Dim found As Range For i = 1 To 3 With i Set found = Worksheets(i).Range("a1:a10").Find("2", LookIn:=xlFormulas) Set found = Worksheets(i).Cells.FindNext(After:=found) Set found = Worksheets(i).Cells.FindNext(After:=found) Set found = Worksheets(i).Cells.FindNext(After:=found) Worksheets(i).Range("B1") = found End With Next i thanks ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 15:33 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85Ну все вроде: Ну не все. Код так и не научился правильно оформлять, неужели так сложно нажать кнопку "цитировать"? justice85 Код: plaintext
Оригинальный ход. А для чего это, поделись опытом )) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 15:45 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
авторtop encryption secret ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 16:33 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Shocker.Pro, Ну правильно - так правильно. Просто не надо использовать Activate Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2011, 20:25 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
В самом первом посту я хотел автор"переставить"(в соседний столбец) ShockerPro решил "коротко"авторWorksheets(i).Range("B1")=found Я еще дополнил свою прогу: авторWorksheets(i).Cells(a, b).Cut Worksheets(i).Range("B1").Select ActiveSheet.Paste т.к. мне в действительности нужно через параметры a,b где(a = found.Row, b = found.Column) еще один вопрос:как поставить на "B1" при "бегущем" Worksheets(i) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 12:49 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
justice85авторWorksheets(i).Cells(a, b).Cut Worksheets(i).Range("B1").Select ActiveSheet.Paste т.к. мне в действительности нужно через параметры a,b где(a = found.Row, b = found.Column) ну и кто мешает? Код: plaintext
justice85еще один вопрос:как поставить на "B1" при "бегущем" Worksheets(i) ? что поставить? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 12:54 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Shocker.Pro, загляни под крышечку спойлер ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 13:44 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
скукотищаShocker.Pro, загляни под крышечку спойлер заглядывал, это не прояснило мне суть вопроса автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 14:26 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Shocker.Pro, а суть своего ответа прояснило? поиск отработат неправильно -если искомое значение встречается в диапазоне один раз; -если искомое значение встречается более одного раза и одно из вхождений - первая ячейка диапазона. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 14:44 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Ты меня вообще запутал. Я оставил на совести автора доделки, дав ему только удочку (ибо я - не Скукотища) Ты ему сделал нормальную законченную функцию, которая возвращает Row. Но что ТЫ хотел сказать МНЕ я не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 15:24 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Shocker.Proсложно нажать кнопку "цитировать"? почему после цитирования не большой как бы абзац. место много "берет". Shocker.ProWorksheets(i).Range("B1")=Worksheets(i).Cells(a, b) сначала показалось как трамвай запихнули в автобус. вообще то там наверно так должно быть: Range("B1").value = Cells(a, b).value лично "объект" Range, я так понимал скукотищазагляни под спойлер проверил. код после F5 ничего не изменил со списком(визуально (или как там?)) что делать с whatfound? вызываю ФУНКЦИЮ так: call FoundSecond((WhatFound)) или по другому лучше? WhatFound=2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 15:24 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Огромное спасибо Shocker.Pro ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 15:33 |
|
findnext(второй по счету?)
|
|||
---|---|---|---|
#18+
Shocker.ProТы ему сделал нормальную законченную функцию, которая возвращает RowФункция не нормальная. Тот топик был исключительно для тебя. Shocker.ProНо что ТЫ хотел сказать МНЕ я не понял.Хотел сказать, что с .Find не всё так просто, как кажется. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 15:41 |
|
|
start [/forum/topic.php?fid=60&fpage=103&tid=2158758]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
138ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 341ms |
total: | 604ms |
0 / 0 |