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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2011, 17:39   #1
Alexdoc76
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 6
По умолчанию Как зациклить макрос?

В Excel необходимо проделать следующую процедуру 3500 раз:
1. Вырезать из ячеек В3:С3 и вставить в D2 (и соответственно E2), далее
2. Вырезать из ячеек В5:С5 и вставить в D4 и так далее, т.е.

всегда вырезать из двух нечетных ячеек и вставлять в ячейку на одну выше и правее. И так 3500 раз.

Помогите пожалуйста с макросом.
Спасибо большое.
Alexdoc76 вне форума Ответить с цитированием
Старый 02.07.2011, 17:51   #2
Igor67
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 56
По умолчанию

Наверно так
sub tt()
dim lRow as long, i as long
application.ScreenUpdating = false
lRow = Cells(Rows.Count, 2).End(xlUp).Row
for i = 3 to lRow step 2
range(cells(i, "B"),cells(i,"C")).copy cells(i-1,"D")
range(cells(i, "B"),cells(i,"C")).clearcontent
next i
end sub
обычно я на http://planetaexcel.ru/forum.php
Igor67 вне форума Ответить с цитированием
Старый 02.07.2011, 18:25   #3
Alexdoc76
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Igor67 Посмотреть сообщение
Наверно так
sub tt()
dim lRow as long, i as long
application.ScreenUpdating = false
lRow = Cells(Rows.Count, 2).End(xlUp).Row
for i = 3 to lRow step 2
range(cells(i, "B"),cells(i,"C")).copy cells(i-1,"D")
range(cells(i, "B"),cells(i,"C")).clearcontent
next i
end sub
Большущее спасибо.
Только ошибку выдал: Объект не поддерживает свойство или метод?
здесь - Range(Cells(i, "B"), Cells(i, "C")).clearcontent

Может я что-то не так сделал?
Alexdoc76 вне форума Ответить с цитированием
Старый 02.07.2011, 18:30   #4
Alexdoc76
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 6
По умолчанию

Когда я записывал макрос, он почему то так записался

Range("B3:C3").Select
Selection.Cut
Range("B5:C5").Select
Selection.Cut
Range("B7:C7").Select
Selection.Cut
Range("C6").Select
End Sub

Я не разбираюсь, конечно, но не вижу где же он вставляет?
Если макрос правильный, нужно его зациклить прост.
Спасибо.
Alexdoc76 вне форума Ответить с цитированием
Старый 02.07.2011, 18:42   #5
Alexdoc76
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Igor67 Посмотреть сообщение
Наверно так
sub tt()
dim lRow as long, i as long
application.ScreenUpdating = false
lRow = Cells(Rows.Count, 2).End(xlUp).Row
for i = 3 to lRow step 2
range(cells(i, "B"),cells(i,"C")).copy cells(i-1,"D")
range(cells(i, "B"),cells(i,"C")).clearcontent
next i
end sub
УРА! Заработало! Только я удалил строку
Код:
range(cells(i, "B"),cells(i,"C")).clearcontent
А как сделать, чтобы строка не очищалачсь а удалялась? Вместо clearcontent поставить deletecontent?

Спасибо!
Alexdoc76 вне форума Ответить с цитированием
Старый 02.07.2011, 18:53   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вообще-то правильно ClearContents - вероятно поэтому и не работала строка.
Ну а если хотите строку удалять - тогда цикл нужно переделать, пускать снизу вверх. Тогда можно
Код:
Rows(i).EntireRow.Delete
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 02.07.2011 в 18:58.
Hugo121 вне форума Ответить с цитированием
Старый 02.07.2011, 19:16   #7
Alexdoc76
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Вообще-то правильно ClearContents - вероятно поэтому и не работала строка.
Ну а если хотите строку удалять - тогда цикл нужно переделать, пускать снизу вверх. Тогда можно
Код:
Rows(i).EntireRow.Delete
Большое спасибо!
Только дело за малым осталось - как пустить снизу вверх? ))
Я сосем не понимаю VBA!
Спасибо.
Alexdoc76 вне форума Ответить с цитированием
Старый 02.07.2011, 19:40   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Наверно так
sub tt()
dim lRow as long, i as long
application.ScreenUpdating = false
lRow = Cells(Rows.Count, 2).End(xlUp).Row
for i = lRow to 3 step -2
range(cells(i, "B"),cells(i,"C")).copy cells(i-1,"D")
Rows(i).EntireRow.Delete
next i
end sub
Но нужно на файле посмотреть, чтоб lRow было на той строке, которая нужна. Но файл есть только у Вас...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 02.07.2011, 20:36   #9
Alexdoc76
Новичок
Джуниор
 
Регистрация: 02.07.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Код:
Наверно так
sub tt()
dim lRow as long, i as long
application.ScreenUpdating = false
lRow = Cells(Rows.Count, 2).End(xlUp).Row
for i = lRow to 3 step -2
range(cells(i, "B"),cells(i,"C")).copy cells(i-1,"D")
Rows(i).EntireRow.Delete
next i
end sub
Но нужно на файле посмотреть, чтоб lRow было на той строке, которая нужна. Но файл есть только у Вас...
Огромное человеческое Вам спасибо! Очень помогли!
Alexdoc76 вне форума Ответить с цитированием
Старый 02.07.2011, 21:00   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Спасибо уходит Игорю - код его.
Хотя я тоже Игорь...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зациклить прогу - как? boris-blade Общие вопросы .NET 1 25.03.2010 19:32
Не могу зациклить макрос Frommerrr Microsoft Office Word 2 25.03.2010 10:57
Как зациклить макрос? kapitel_bc@ukr.net Microsoft Office Excel 7 13.02.2010 23:48
Как правильно зациклить?) Roman_ PHP 3 01.05.2009 15:56