Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Цикл for по строкам с получением Range перескакивает строку - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Цикл for по строкам с получением Range перескакивает строку (то есть, пропускает ряд. Как исправить? (код внутри))
Цикл for по строкам с получением Range перескакивает строку
andreyburym Дата: Пятница, 04.06.2021, 08:36 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте,
такой код
[vba]
Код

For cursRows = 2 To 888 Step 1
     Set rowRange = WS.Range("A" & cursRows & ":N" & cursRows)
     inFrom = rowRange(cursRows, 3)
Next cursRows

[/vba]
при обходе пропускает строку, cursRows идёт нормально 2,3,4...
А range получает так:

row2 | -пропущено
row3 | получает при cursRows == 2
row4 | -пропущено
row5 | получает при cursRows == 3


подозреваю, что какая-то мелкая мелочь, никак не пойму. О том, что
"...на основе объекта Range виртуальный лист со своей собственной нумерацией" – читал,
но это, вроде бы при заполнении ячеек играет роль?

Подскажите, пожалуйста.

Спасибо!


Сообщение отредактировал andreyburym - Пятница, 04.06.2021, 08:37
 
Ответить
СообщениеЗдравствуйте,
такой код
[vba]
Код

For cursRows = 2 To 888 Step 1
     Set rowRange = WS.Range("A" & cursRows & ":N" & cursRows)
     inFrom = rowRange(cursRows, 3)
Next cursRows

[/vba]
при обходе пропускает строку, cursRows идёт нормально 2,3,4...
А range получает так:

row2 | -пропущено
row3 | получает при cursRows == 2
row4 | -пропущено
row5 | получает при cursRows == 3


подозреваю, что какая-то мелкая мелочь, никак не пойму. О том, что
"...на основе объекта Range виртуальный лист со своей собственной нумерацией" – читал,
но это, вроде бы при заполнении ячеек играет роль?

Подскажите, пожалуйста.

Спасибо!

Автор - andreyburym
Дата добавления - 04.06.2021 в 08:36
Gustav Дата: Среда, 01.09.2021, 13:27 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2731
Репутация: 1132 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
row3 | получает при cursRows == 2
row5 | получает при cursRows == 3
Подозреваю, что тенденция дальше выглядит так:
[vba]
Код
cursRows   row
2             3
3             5
4             7
5             9
6             11
7             13
8             15
9             17
10            19
[/vba]
И всё это потому, что следующий оператор не совсем корректен - именно потому, что у Range, как вы сказали, "свой виртуальный лист", в который вы пытаетесь (еще раз) вставить внешний счётчик строк:
[vba]
Код
inFrom = rowRange(cursRows, 3)
[/vba]
Замените cursRows на 1 и будет вам счастье:
[vba]
Код
inFrom = rowRange(1, 3)
[/vba]
Думаю, в подробностях теперь разберетесь самостоятельно.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
Сообщение
row3 | получает при cursRows == 2
row5 | получает при cursRows == 3
Подозреваю, что тенденция дальше выглядит так:
[vba]
Код
cursRows   row
2             3
3             5
4             7
5             9
6             11
7             13
8             15
9             17
10            19
[/vba]
И всё это потому, что следующий оператор не совсем корректен - именно потому, что у Range, как вы сказали, "свой виртуальный лист", в который вы пытаетесь (еще раз) вставить внешний счётчик строк:
[vba]
Код
inFrom = rowRange(cursRows, 3)
[/vba]
Замените cursRows на 1 и будет вам счастье:
[vba]
Код
inFrom = rowRange(1, 3)
[/vba]
Думаю, в подробностях теперь разберетесь самостоятельно.

Автор - Gustav
Дата добавления - 01.09.2021 в 13:27
andreyburym Дата: Четверг, 02.09.2021, 07:06 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Gustav, точно, спасибо!
Это я от недопонимания что есть "виртуальный лист". А получается, это как если бы мы со страницы книги выписали на листочек строки с 10-й по 15.
На странице последняя так и осталась бы 15-той строкой, а в нашей выписке это была бы пятая строка.
А так как у меня range однострочный, то текущая всегда первая, равна 1.

Спасибо!
 
Ответить
СообщениеGustav, точно, спасибо!
Это я от недопонимания что есть "виртуальный лист". А получается, это как если бы мы со страницы книги выписали на листочек строки с 10-й по 15.
На странице последняя так и осталась бы 15-той строкой, а в нашей выписке это была бы пятая строка.
А так как у меня range однострочный, то текущая всегда первая, равна 1.

Спасибо!

Автор - andreyburym
Дата добавления - 02.09.2021 в 07:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Цикл for по строкам с получением Range перескакивает строку (то есть, пропускает ряд. Как исправить? (код внутри))
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!