Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2011, 16:55   #1
Ignam
 
Регистрация: 18.07.2011
Сообщений: 3
По умолчанию Почему-то цикл доходит до только 100

Добрый день.
Помогите советом.
Есть макрос, который вставляет строки, скопированные с другого листа, на текущий лист. Это все крутится в цикле. Но когда цикл доходит до 100-ой строки по счётчику (несмотря на то, что строк в исходном файле больше), копирование прекращается (цикл должен кончаться, когда дойдет до пустой строки).

Код:
Set Sel = Range("A3:A999")

i = 1
' перебирать ВСЕ строки, пока не будет пустая (последняя)
For Each c In Sel.Rows
If c.Cells(i, 1).Value <> "" Then '

'расчистка места на целевом листе назначения для копируемой строки
    Sheets(SourceList).Activate
    Rows("6:6").Select
    Selection.Insert Shift:=xlDown
'копирование строки
    c.EntireRow.Copy Destination:=wn.Range("A7")
   
i = i + 1
End If
Next c

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.07.2011 в 19:49.
Ignam вне форума Ответить с цитированием
Старый 18.07.2011, 17:08   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Логика непонятна.
с - это очередная ячейка в диапазоне, строка которой копируется.
(Кстати, проще было бы написать
Код:
For Each c in Range("A3:A999")
А проверяется ячейка, сдвинутая на (i-1) относительно с:
Код:
If c.Cells(i, 1).Value <> "" Then
, причем i по ходу увеличивается.

А что такое лист wn, куда копируется строка?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 18.07.2011, 17:38   #3
Ignam
 
Регистрация: 18.07.2011
Сообщений: 3
По умолчанию

Спасибо за ответ. Я сделал наглядный пример - по данной ссылке : http://webfile.ru/5444604
Ignam вне форума Ответить с цитированием
Старый 18.07.2011, 17:44   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Рассмотрим пример работы Вашего макроса:
пусть Sel = "1:5" (пять первых строк листа)
пусть все ячейки первой колонки этих пяти строк не пусты

рассмотрим чему будут равны переменные при работе Вашего цикла
For Each c In Sel.Rows
рссмотрим следующие величины:
№ - какой раз выполнятся цикл (в макросе этого нет, что понимать на каком шаге мы находимся)
С - из макроса. смотрим с.Row (какая строка)
i - непонятный счетчик из Вашего макроса
c.Cells(i, 1) - на что ссылается c.Cells(i, 1).

Код:
№  с.Row      i      c.Cells(i, 1)
1   1         1      Cells(1,1)
2   2         2      Cells(3,1)
3   3         3      Cells(5,1)
4   4         4      Cells(7,1)
5   5         4[5]  Cells(8[9],1
обратите внимание, уже на втором шаге цикла c.Cells(i, 1) ссылается на А3, а на третьем шаге на А5. Так задумано? или это ошибка?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 18.07.2011 в 17:46.
IgorGO вне форума Ответить с цитированием
Старый 18.07.2011, 18:02   #5
Ignam
 
Регистрация: 18.07.2011
Сообщений: 3
По умолчанию

Да, в этом и была у меня ошибка.
Закомментировал i = i + 1 и всё стало ок.
Спасибо.
Ignam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл выводит только одну запись из базы romanet PHP 13 08.07.2011 13:40
Комментарии. Только при пин-коде. Почему работает только 1 пи код? Bushel PHP 1 23.10.2010 18:21
Почему body в IE растягивается на 100%, хотя в стилях 1024px aseeva_sonya HTML и CSS 8 06.10.2009 19:33
Почему ошибка только в DLL? AidarBik Общие вопросы Delphi 13 08.10.2007 14:49