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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2013, 14:41   #1
Nitrex
Новичок
Джуниор
 
Регистрация: 18.10.2013
Сообщений: 4
По умолчанию Помогите с макросом копипаста.

Есть книга excel с несколькими листами.

На одном листе список фирм. Когда около нужной тебе фирмы ставишь флаг "1" , то на втором листе выводится информация по фирме.
С этой информации необходимо скопировать 1 строчку на третий лист.

простой записью макроса получилось вот это:

Код:
Sub Macro1()
'
' Macro1 Macro
'
' Keyboard Shortcut: Ctrl+r
'
    Range("D169").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("D9:O9").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=144
    Range("D169").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("D170").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("D10:O10").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

Как бы теперь провернуть эту операцию еще 200 раз?
сам цикл, насколько я помню из институтской программы
Код:
For i = 1 To 200
Cells(i + 1, 1) = i
Но вот как заставить каждый раз спускаться на 1 ячейку вниз я не знаю.
Заранее спасибо за помощь!

Последний раз редактировалось Nitrex; 18.10.2013 в 15:10.
Nitrex вне форума Ответить с цитированием
Старый 18.10.2013, 16:05   #2
Nitrex
Новичок
Джуниор
 
Регистрация: 18.10.2013
Сообщений: 4
По умолчанию

Решено.

Код:
Sub Macro1()
    Dim r As Integer
    For r = 169 To 323
        Cells(r, 4).Value = 1
        Range(Cells(r - 160, 4), Cells(r - 160, 15)).Copy
        Range(Cells(r - 160, 4), Cells(r - 160, 15)).PasteSpecial xlPasteValues
        Cells(r, 4).ClearContents
    Next r
End Sub
Предварительно во все клеточки прописать формулу, откуда им забирать данные.

Последний раз редактировалось Nitrex; 18.10.2013 в 16:07.
Nitrex вне форума Ответить с цитированием
Старый 18.10.2013, 17:20   #3
roborrr
Математик
Форумчанин
 
Регистрация: 27.02.2011
Сообщений: 125
По умолчанию

вы копируете Range("D9:O9") и вставляйте на том же месте. зачем? перед вставкой, выберите место, где вставить:
Range("D9:O9").Select
Selection.Copy
Range("где нужно вставить скопированное").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

a цикл Можно сделать так:

For j = 0 To 199
Range(Cells(169 + j, 4), Cells(169 + j, 4)).Select ' вместо Range("D169")
ActiveCell.FormulaR1C1 = "1"
Range(Cells(9 + j, 4), Cells(9 + j, 15)).Select ' вместо Range("D9:O9")
Selection.Copy
' дальше по вашему

Next j
roborrr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос для простого копипаста dalmatin Microsoft Office Excel 4 11.03.2011 11:25
Помогите с макросом Romuald Microsoft Office Excel 23 05.02.2009 11:51
Помогите пож. с макросом! platonmedvedev Microsoft Office Excel 2 13.01.2009 12:53
Помогите с макросом SoFuWa Microsoft Office Excel 7 15.08.2008 15:26