powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
17 сообщений из 17, страница 1 из 1
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993060
Takayavot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Нужно написать макрос, который бы обрабатывал строки в Excel, вставляя по определенным критериям новые.
- Вначале определяю lastrow
- Затем пишу цикл For I = 1 to lastrow
- вставляю новые строки согласно условию
- тут же пересчитываю lastrow с учетом вставленных строк (lastrow = lastrow + inserted)

Финальный lastrow определяется верно, с учетом вставленных строк (проверяла)
Но сам цикл заканчивается раньше, чем положено.
У меня такое ощущение, что в самом цикле запоминается изначально определенный lastrow,
и пересчеты внутри цикла никак его не меняют.

Вопрос. Как можно это обойти не прибегая к циклами типа Do while.

Спасибо.
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993066
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TakayavotУ меня такое ощущение, что в самом цикле запоминается изначально определенный lastrow,
и пересчеты внутри цикла никак его не меняют.именно так
TakayavotВопрос. Как можно это обойти не прибегая к циклами типа Do while.У вас whileфобия?
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993068
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TakayavotКак можно это обойти не прибегая к циклами типа Do while.Можно через цикл Do Until
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993074
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ладно, уговорили. Если алгоритм позволяет, можете сделать цикл For от конца к началу.
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993081
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TakayavotУ меня такое ощущение, что в самом цикле запоминается изначально определенный lastrowПравильное ощущение.
Как уже написал Shocker - делайте цикл обратный:
Код: vbnet
1.
For l = lastrow to 1 step -1
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993125
hclubmk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант:
Код: vbnet
1.
2.
3.
For l = 1 To 1 Step 0
    If <условие окончания> Then: Exit For
Next
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993128
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProTakayavotКак можно это обойти не прибегая к циклами типа Do while.Можно через цикл Do Until а я предпочитаю while wend :)
потому что сначала проверяется условие, а потом уже все остальное.
до тех пор, пока не потребуется exit do, само собой.
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993129
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа я предпочитаю while wend :)
потому что сначала проверяется условие, а потом уже все остальное.а ты знаешь, что можно написать
Код: vbnet
1.
2.
3.
Do Until
 ...
Loop

а можно
Код: vbnet
1.
2.
3.
Do
 ...
Loop Until



ЗЫ: А можно вообще написать
Код: vbnet
1.
2.
3.
4.
5.
Do
  ...
  If... Exit Do
  ...
Loop
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993130
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyа я предпочитаю while wend :)мне слово Wend неприятно...
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993132
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyа я предпочитаю while wend :)
потому что сначала проверяется условие, а потом уже все остальное.а ты знаешь, что можно написать
Код: vbnet
1.
2.
3.
Do Until
 ...
Loop

а можно
Код: vbnet
1.
2.
3.
Do
 ...
Loop Until



ЗЫ: А можно вообще написать
Код: vbnet
1.
2.
3.
4.
5.
Do
  ...
  If... Exit Do
  ...
Loop

многабукоф
while wend короче при любых раскладах
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993139
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyмногабукофбрейнфак вам в руки!
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993257
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Цикл - слишком важное дело, чтобы доверять его компилятору! Только If и GoTo , только хардкор!
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993280
Takayavot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProУ вас whileфобия?


Не фобия. Просто плохо пишу макросы и неохота менять его сильно.
Думала, может какую козявку можно поставить рядом с циклом и чудо случится..
но ладно. Попробую с дувайлами.
Спасибо всем.
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993469
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TakayavotПопробую с дувайламиВы прикалываетесь? Вам надо одну строку поменять и все. И убрать свое изменений lastrow. Я даже строку кода привел.
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993522
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

ты забыл про l=l+1, в твоем варианте оно же не будет щелкать само... )
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993742
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Так оно и не надо, т.к. цикл идет снизу вверх. Строки кодами добавляются по умолчанию ниже указанной строки. Поэтому если правильно организовать цикл - то нафиг никакие l=l+1 не нужны. Я так раз 500 делал и не было проблем. И код читаемый без путаницы с l , и делается все правильно.
...
Рейтинг: 0 / 0
Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
    #38993749
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

Сорри, я твой вариант с hclubmk перепутал (не туда посмотрел) ))
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Цикл For (I = 1 to lastrow). Сделать так, чтобы lastrow менялась
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]