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

Вход

Регистрация

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

 

= Мир MS Excel/Создание сотни страниц и заполнение их из таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание сотни страниц и заполнение их из таблицы (Макросы/Sub)
Создание сотни страниц и заполнение их из таблицы
trn09 Дата: Пятница, 24.04.2015, 10:22 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Добрый день
Если коротко, то:
На первом листе есть таблица с данными.
Есть второй лист - РЫБА (образец).
Необходимо скопировать рыбу и вставить в неё значения из первой строки.
Потом скопировать ещё раз рыбу и вставить в неё значения из второй строки.
и так до конца таблицы.
С помощью макросмейкера удалось создаь НЕЧТО, что копирует листы и копирует туда значения:

[vba]
Код
For Each cCurr In Range("A1:A10")

If cCurr = "" Then
Exit For
Else
Sheets("TEMPLATE").Select
Sheets("TEMPLATE").Copy After:=Sheets(4)
Sheets("Sheet1").Select
Range("A1").Select
Selection.Copy
Sheets("TEMPLATE (2)").Select
Range("A6:C6").Select
ActiveSheet.Paste
End If
Next cCurr
[/vba]
Подскажите, сложно переделать его, что бы он менял строки (сейчас он копирует значения из ячейки А1, а для второго шита надо уже из ячейки А2)

Если это очень сложно и долго для понимания новичку, скажите, что бы я забросил эту идею и начал всё делать в ручную, не теряя на это время =)
Спасибо
[moder]Код следует оформлять тегами (кнопка #). Исправила[/moder]
К сообщению приложен файл: TEMP.xlsm (13.8 Kb)


Сообщение отредактировал trn09 - Пятница, 24.04.2015, 11:13
 
Ответить
СообщениеДобрый день
Если коротко, то:
На первом листе есть таблица с данными.
Есть второй лист - РЫБА (образец).
Необходимо скопировать рыбу и вставить в неё значения из первой строки.
Потом скопировать ещё раз рыбу и вставить в неё значения из второй строки.
и так до конца таблицы.
С помощью макросмейкера удалось создаь НЕЧТО, что копирует листы и копирует туда значения:

[vba]
Код
For Each cCurr In Range("A1:A10")

If cCurr = "" Then
Exit For
Else
Sheets("TEMPLATE").Select
Sheets("TEMPLATE").Copy After:=Sheets(4)
Sheets("Sheet1").Select
Range("A1").Select
Selection.Copy
Sheets("TEMPLATE (2)").Select
Range("A6:C6").Select
ActiveSheet.Paste
End If
Next cCurr
[/vba]
Подскажите, сложно переделать его, что бы он менял строки (сейчас он копирует значения из ячейки А1, а для второго шита надо уже из ячейки А2)

Если это очень сложно и долго для понимания новичку, скажите, что бы я забросил эту идею и начал всё делать в ручную, не теряя на это время =)
Спасибо
[moder]Код следует оформлять тегами (кнопка #). Исправила[/moder]

Автор - trn09
Дата добавления - 24.04.2015 в 10:22
Hugo Дата: Пятница, 24.04.2015, 10:44 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Где-то на другом форуме я уже отвечал. Потеряли или не подошло?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеГде-то на другом форуме я уже отвечал. Потеряли или не подошло?

Автор - Hugo
Дата добавления - 24.04.2015 в 10:44
trn09 Дата: Пятница, 24.04.2015, 10:52 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Где-то на другом форуме я уже отвечал. Потеряли или не подошло?

обсуждалось тут: http://www.planetaexcel.ru/forum....e550835
Он не переберает строки при копировании =(
[moder]Исправляйте 1-е замечание модератора!
И вставьте ссылку на форум, где обсуждался этот вопрос[/moder]


Сообщение отредактировал trn09 - Пятница, 24.04.2015, 11:14
 
Ответить
Сообщение
Где-то на другом форуме я уже отвечал. Потеряли или не подошло?

обсуждалось тут: http://www.planetaexcel.ru/forum....e550835
Он не переберает строки при копировании =(
[moder]Исправляйте 1-е замечание модератора!
И вставьте ссылку на форум, где обсуждался этот вопрос[/moder]

Автор - trn09
Дата добавления - 24.04.2015 в 10:52
Hugo Дата: Пятница, 24.04.2015, 10:57 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Чем докажете? Голословное утверждение.
Вот чуть другой код - т.к. тут соизволили показать пример.
[vba]
Код
Sub COPY_()    'не используйте служебные имена!
     Application.ScreenUpdating = False
     For Each ccurr In Sheets(1).Range("A1:A5")
         If ccurr = "" Then
             Exit For
         Else
             Sheets("TEMPLATE").COPY After:=Sheets(2)
             Sheets(3).Range("A6") = ccurr
         End If
     Next ccurr
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЧем докажете? Голословное утверждение.
Вот чуть другой код - т.к. тут соизволили показать пример.
[vba]
Код
Sub COPY_()    'не используйте служебные имена!
     Application.ScreenUpdating = False
     For Each ccurr In Sheets(1).Range("A1:A5")
         If ccurr = "" Then
             Exit For
         Else
             Sheets("TEMPLATE").COPY After:=Sheets(2)
             Sheets(3).Range("A6") = ccurr
         End If
     Next ccurr
End Sub
[/vba]

Автор - Hugo
Дата добавления - 24.04.2015 в 10:57
trn09 Дата: Пятница, 24.04.2015, 11:16 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Чем докажете? Голословное утверждение.
Вот чуть другой код - т.к. тут соизволили показать пример


Гениально!!! О_О
Hugo, Вы ЛУЧШИЙ!!!
То что надо!!!!!
=)
 
Ответить
Сообщение
Чем докажете? Голословное утверждение.
Вот чуть другой код - т.к. тут соизволили показать пример


Гениально!!! О_О
Hugo, Вы ЛУЧШИЙ!!!
То что надо!!!!!
=)

Автор - trn09
Дата добавления - 24.04.2015 в 11:16
trn09 Дата: Пятница, 24.04.2015, 11:31 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Извиняюсь за наглость, но как сделать что бы листы в конец добавлялись....
Sheets("TEMPLATE").COPY After:=Sheets(2) - добавляет после второго. В итоге получается лист5, лист4, лист3, лист2, лист 1,
а желательно: лист1, лист2, лист3, лист4, лист5
 
Ответить
СообщениеИзвиняюсь за наглость, но как сделать что бы листы в конец добавлялись....
Sheets("TEMPLATE").COPY After:=Sheets(2) - добавляет после второго. В итоге получается лист5, лист4, лист3, лист2, лист 1,
а желательно: лист1, лист2, лист3, лист4, лист5

Автор - trn09
Дата добавления - 24.04.2015 в 11:31
Manyasha Дата: Пятница, 24.04.2015, 11:42 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
trn09, замените [vba]
Код
            Sheets("TEMPLATE").COPY After:=Sheets(2)
             Sheets(3).Range("A6") = ccurr
[/vba]на[vba]
Код
            Sheets("TEMPLATE").COPY After:=Sheets(Sheets.Count)
             Sheets(Sheets.Count).Range("A6") = ccurr
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеtrn09, замените [vba]
Код
            Sheets("TEMPLATE").COPY After:=Sheets(2)
             Sheets(3).Range("A6") = ccurr
[/vba]на[vba]
Код
            Sheets("TEMPLATE").COPY After:=Sheets(Sheets.Count)
             Sheets(Sheets.Count).Range("A6") = ccurr
[/vba]

Автор - Manyasha
Дата добавления - 24.04.2015 в 11:42
Hugo Дата: Пятница, 24.04.2015, 11:54 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
В целом этот код такой же, как и тот, что я написал вчера (?) на другом форуме. Но т.к. там не было примера - он мог не работать в таком файле.


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Пятница, 24.04.2015, 11:55
 
Ответить
СообщениеВ целом этот код такой же, как и тот, что я написал вчера (?) на другом форуме. Но т.к. там не было примера - он мог не работать в таком файле.

Автор - Hugo
Дата добавления - 24.04.2015 в 11:54
trn09 Дата: Пятница, 24.04.2015, 12:31 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Manyasha, Заработало! Спасибо! =)
Hugo, Спасибо. Я, в силу своей ексельной безграмотности, немого не так всё понял, но вы оказались правы!
Ещё раз спасибо всем!
 
Ответить
СообщениеManyasha, Заработало! Спасибо! =)
Hugo, Спасибо. Я, в силу своей ексельной безграмотности, немого не так всё понял, но вы оказались правы!
Ещё раз спасибо всем!

Автор - trn09
Дата добавления - 24.04.2015 в 12:31
trn09 Дата: Пятница, 24.04.2015, 14:24 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
trn09,
Вроде разобрался, как это работает...
но при попытке увеличить количество ячеек всё поломал:
[vba]
Код

Sub COPY()

     Application.ScreenUpdating = False
     For Each ccurr In Sheets(1).Range("A1:A5")
     For Each REV In Sheets(1).Range("B1:B5")
         If ccurr = "" Then
             Exit For
         Else
             Sheets("TEMPLATE").COPY After:=Sheets(Sheets.Count)
             Sheets(Sheets.Count).Range("A6") = ccurr
             Sheets(Sheets.Count).Range("D6") = REV
         End If
               
         Next ccurr
         Next REV
End Sub
[/vba]

Как можно это исправить?
 
Ответить
Сообщениеtrn09,
Вроде разобрался, как это работает...
но при попытке увеличить количество ячеек всё поломал:
[vba]
Код

Sub COPY()

     Application.ScreenUpdating = False
     For Each ccurr In Sheets(1).Range("A1:A5")
     For Each REV In Sheets(1).Range("B1:B5")
         If ccurr = "" Then
             Exit For
         Else
             Sheets("TEMPLATE").COPY After:=Sheets(Sheets.Count)
             Sheets(Sheets.Count).Range("A6") = ccurr
             Sheets(Sheets.Count).Range("D6") = REV
         End If
               
         Next ccurr
         Next REV
End Sub
[/vba]

Как можно это исправить?

Автор - trn09
Дата добавления - 24.04.2015 в 14:24
Manyasha Дата: Пятница, 24.04.2015, 14:33 | Сообщение № 11
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
trn09, поменяйте местами выходы из циклов:[vba]
Код
Next REV
Next ccurr
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеtrn09, поменяйте местами выходы из циклов:[vba]
Код
Next REV
Next ccurr
[/vba]

Автор - Manyasha
Дата добавления - 24.04.2015 в 14:33
trn09 Дата: Пятница, 24.04.2015, 14:35 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Manyasha, БРАВО!!!! =)
Ещё раз спасибо!
 
Ответить
СообщениеManyasha, БРАВО!!!! =)
Ещё раз спасибо!

Автор - trn09
Дата добавления - 24.04.2015 в 14:35
trn09 Дата: Пятница, 24.04.2015, 14:56 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Ой.
Это я оказывается цикл в цикле сделал.
и при пяти ячейках и двадцати листах он уже повис....
Надо что бы он скопировал лист, вставил туда значения с первого листа (в 2 ячейки из двух столбцов) и после этого перешёл к копированию следущего шита (вставляя в него 2 ячейки из двух столбцов следующей строки).
Как? =(


Сообщение отредактировал trn09 - Пятница, 24.04.2015, 15:17
 
Ответить
СообщениеОй.
Это я оказывается цикл в цикле сделал.
и при пяти ячейках и двадцати листах он уже повис....
Надо что бы он скопировал лист, вставил туда значения с первого листа (в 2 ячейки из двух столбцов) и после этого перешёл к копированию следущего шита (вставляя в него 2 ячейки из двух столбцов следующей строки).
Как? =(

Автор - trn09
Дата добавления - 24.04.2015 в 14:56
Manyasha Дата: Пятница, 24.04.2015, 17:11 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
trn09, проверяйте


Не называйте макросы служебными именами! Hugo Вам уже об этом писал.
К сообщению приложен файл: TEMP1.xlsm (13.6 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеtrn09, проверяйте


Не называйте макросы служебными именами! Hugo Вам уже об этом писал.

Автор - Manyasha
Дата добавления - 24.04.2015 в 17:11
trn09 Дата: Пятница, 24.04.2015, 18:16 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Manyasha, Да, всё верно! Всё правильно! Всё работает!
Надеюсь, вас не очень напрягли мои проблемы.
Про название макросов запомнил. Больше не буду так называть.
Спасибо. И хороших выходных.
 
Ответить
СообщениеManyasha, Да, всё верно! Всё правильно! Всё работает!
Надеюсь, вас не очень напрягли мои проблемы.
Про название макросов запомнил. Больше не буду так называть.
Спасибо. И хороших выходных.

Автор - trn09
Дата добавления - 24.04.2015 в 18:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Создание сотни страниц и заполнение их из таблицы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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