Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Добрый вечер! У меня макрос в цикле перебирает все ячейки второго столбца на листе, при этом я хочу, чтобы когда он сталкивался с определенным значением в какой-либо ячейки(например, "ДС") то перескакивал бы на другую ячейку, также с определенным значением(например, "Всего по ДС"). Подскажите пожалуйста, как это сделать! =) Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2010, 17:45 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Вот тот самый макрос: Sub Sravnenie() Dim object, times Dim plan As Object, gos As Object, result As Object, x As Range Dim FirstAddress$, blank_cell As Range Dim discipl As Range Worksheets("Лист3").Cells.ClearContents Set plan = Sheets(2) Set gos = Sheets(1) Set result = Sheets(3) For Each discipl In plan.UsedRange.Columns(2).Cells object = discipl.Value times = plan.Cells(discipl.Row, 8).Value If object <> "" Then If object Like "ДС*" Or object Like "ФТД*" Then Set DS_FTD = plan.Cells(discipl.Row, 3) Set x = gos.Columns(2).Find(DS_FTD, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True) Set object = plan.Columns(2).Find("Всего по ДС*") Else Set x = gos.Columns(2).Find(object, LookIn:=xlValues, lookat:=xlPart, MatchCase:=True) If Not x Is Nothing Then FirstAddress = x.Address Do Set x = gos.Columns(2).FindNext(x) If gos.Cells(x.Row, 3).Value <> times Then Set blank_cell = result.Cells(result.Range("a" & Rows.Count).End(xlUp).Row + 1, 1) plan.Cells(discipl.Row, 2).Copy blank_cell End If Loop While Not x Is Nothing And x.Address <> FirstAddress Else Set blank_cell = result.Cells(result.Range("a" & Rows.Count).End(xlUp).Row + 1, 1) plan.Cells(discipl.Row, 2).Copy blank_cell 'blank_cell.Offset(0, 2).Value = "Not Exist In Sheets1 Column2!" End If End If End If Next ActiveSheet.Columns.AutoFit ActiveSheet.Rows.AutoFit End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2010, 17:47 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2010, 18:45 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Alisya, Не очень понятно, что вы подразумеваете под "перескакивал" Вы хотите, чтобы изменился сам цикл и discipl пошел от нового значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2010, 00:06 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
я хочу чтобы как только в цикле встретилась ячейка со значением "ДС" или "ФТД", цикл переходил к обработке ячейки со значением "Всего" и соответственно discipl менялся на это значение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2010, 18:45 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Тогда вместо цикла For... Each используйте обычный цикл, что-то типа Код: plaintext вместо discipl у вас будет Cells(i, 2) и, соответственно, меняя i, вы сможете делать этот перескок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2010, 19:05 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
а если я незнаю на сколько ячеек мне надо сместиться, то как быть???? Мне нужно чтобы цикл перескакивал на ячейку с определенным текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 14:01 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Alisyaа если я незнаю на сколько ячеек мне надо сместиться, то как быть???? Мне нужно чтобы цикл перескакивал на ячейку с определенным текстом. Почему не знаете? После поиска у вас в переменной x находится найденная ячейка. x.Row - это и есть нужная строка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2010, 14:05 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro, у меня ничего не получается. Не подскажите в каком месте изменять i? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2010, 13:28 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
AlisyaShocker.Pro, у меня ничего не получается. Не подскажите в каком месте изменять i? плиз, сделайте тогда файл, оставив только нужные данные и нужную процедуру без всякий посторонних команд, чтобы мне в них не разбираться, а я вам ее отредактирую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2010, 13:35 |
|
||
|
Макрос с циклом
|
|||
|---|---|---|---|
|
#18+
Alisya, Две существенных ошибки: 1) вместо предложенного мной .Row вы использовали .Rows 2) поиск "Всего" вы проводили с начала столбца. То есть найдя впервые нужное сочетание в 15-й строке вы пытались перевести цикл на 14-ю строку, где впервые встречается "Всего*". То есть программа зацикливалась (бы, если бы не ошибка 1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2010, 14:55 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=36519821&tid=2160023]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 362ms |

| 0 / 0 |
