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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2013, 18:27   #1
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
Восклицание Помогите доделать макрос

Добрый день!

Дорогие друзья,

Очень нужна помощь в доработке макроса, который приведен ниже (так же у теме уже приложен файл "Пример", где уже можно редактировать макрос и сразу его тестить):

Sub Consolidation()

Const mainWS As String = "?aano?"
Const rangeColumn As String = "A:B"

Dim meter As Long, i As Long, stepmeter As Integer

stepmeter = ThisWorkbook.Worksheets(mainWS).Ran ge(rangeColumn).Columns.Count
meter = 1

For i = 1 To ThisWorkbook.Worksheets.Count
If ThisWorkbook.Worksheets(i).Name <> mainWS Then
ThisWorkbook.Worksheets(i).Range(ra ngeColumn).Copy
ThisWorkbook.Worksheets(mainWS).Col umns(meter).Select
ActiveSheet.Paste
meter = meter + stepmeter
End If
Next

End Sub

Доработка нужна в следующем:
Сейчас макрос только собирает определенные столбцы со всех листов на указанный.

Нужно:
1) чтобы он начинал копировать столбцы, например, с 3 или 4 листа (нужно, чтобы порядковое значение можно было задавать руками в коде) и до бесконечности.
2) чтобы он начинал вставлять столбцы на указанный лист, например, пропуская три первых столбца и вниз на две строки.
3) чтобы копируемые столбцы вставлялись на указанный лист с пропуском, например, один столбец (т.е. он копирует столбец с первого листа, вставляет его на указанный лист, делает пропуск один столбец и вставляет данные скопированные со следующего листа).

Очень прошу помочь понимающих в этом людей.
Всем заранее спасибо! Очень надеюсь на вашу помощь!
Вложения
Тип файла: zip Пример.zip (19.8 Кб, 11 просмотров)
Djo_Oker вне форума Ответить с цитированием
Старый 31.10.2013, 19:03   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
3 или 4 листа ... задавать руками в коде) и до бесконечности
Чак Норрис единственный в мире человек, который досчитал до бесконечности... дважды
Код:
Sub Consolidation()
  Const mainWS As String = "Реестр"
  Const rangeColumn As String = "A:B"
  Dim i As Long, stepmeter As Integer, r As Long, c As Long
  stepmeter = Range(rangeColumn).Columns.Count:  r = 1:  c = 1
  For i = 1 To ThisWorkbook.Worksheets.Count
    If i > ActiveSheet.Index Then
      Application.Intersect(Worksheets(i).UsedRange, Worksheets(i).Range(rangeColumn)).Copy Worksheets(mainWS).Cells(r, c)
      c = c + stepmeter + 1:  r = r + 2
    End If
  Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.11.2013, 10:43   #3
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
По умолчанию

Огромное тебе спасибо!!!! Работает точно так, как я хотел.
Только вот столкнулся с новой проблемой. =(
В тех листах откуда макрос берет столбцы есть формулы.
После копирования в активный лист они (естественно) сбиваются после его обновления.
Как сделать так, чтобы макрос копировал столбцы и вставлял их с дополнительным условием вставки "только значения" ("123")?
Если это получится реализовать, то это спасет меня и еще с 10-ток людей от длительных мучений с таблицами....

Последний раз редактировалось Djo_Oker; 01.11.2013 в 10:46.
Djo_Oker вне форума Ответить с цитированием
Старый 01.11.2013, 10:55   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
...
Application.Intersect(Worksheets(i).UsedRange, Worksheets(i).Range(rangeColumn)).Copy 
Worksheets(mainWS).Cells(r, c).PasteSpecial Paste:=xlPasteValues
...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.11.2013, 11:08   #5
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
По умолчанию

Макрос с такими изменениями не срабатывает, выдает ошибку.
Приложил к ответу скрин (НОВЫЙ).
Может быть я что-то не так вставил?
Изображения
Тип файла: jpg Безымянный.jpg (78.5 Кб, 157 просмотров)

Последний раз редактировалось Djo_Oker; 01.11.2013 в 11:16.
Djo_Oker вне форума Ответить с цитированием
Старый 01.11.2013, 11:11   #6
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

несколько мелковато - вообще ничего не видно
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 01.11.2013, 11:17   #7
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
несколько мелковато - вообще ничего не видно
Приложил новый скрин.
Спасибо и тебе за участие в теме)
Djo_Oker вне форума Ответить с цитированием
Старый 01.11.2013, 11:23   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

смотрим внимательнее.
вообще-то у меня в две строки написано или после Copy: (двоеточие)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 01.11.2013, 11:32   #9
Djo_Oker
Пользователь
 
Регистрация: 31.10.2013
Сообщений: 11
Хорошо

Ок, я не думал, что это настолько важно.
Исправил, и все пошло, как нужно.
Еще раз огромное спасибо.
Благодарность кину на 41001804815208

Тему можно считать закрытой.
Djo_Oker вне форума Ответить с цитированием
Старый 01.11.2013, 20:43   #10
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Спасибо!!!
деньги поступили. Обращайтесь при случае.
об этом не говорил: макрос обрабатывает все листы книги, которые находяться за листом "Реестр"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 01.11.2013 в 20:46.
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите доделать innaa639 Паскаль, Turbo Pascal, PascalABC.NET 1 21.05.2009 09:52
Помогите доделать Bay Паскаль, Turbo Pascal, PascalABC.NET 1 05.01.2009 15:01
Помогите доделать Povar Паскаль, Turbo Pascal, PascalABC.NET 1 16.05.2008 14:43