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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2013, 15:30   #1
Dima36668
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 18
По умолчанию В чем ошибка?

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

Sheets("Лист1").Select
If Range("P2") = 1 Then Range("P3").Select
If Range("P3") = 1 Then
Sheets("Вова").Select
Range("B3:F6").Select
Selection.Copy
Sheets("Лист1").Select
Range("G9").Select
ActiveSheet.Paste
End If


Sheets("Лист1").Select
If Range("P2") = 1 Then Range("P3").Select
If Range("P3") = 2 Then
Sheets("Вова").Select
Range("G3:K6").Select
Selection.Copy
Sheets("Лист1").Select
Range("G9").Select
ActiveSheet.Paste
End If

Sheets("Лист1").Select
If Range("P2") = 2 Then Range("P3").Select
If Range("P3") = 1 Then
Sheets("Петя").Select
Range("B3:F6").Select
Selection.Copy
Sheets("Лист1").Select
Range("G9").Select
ActiveSheet.Paste
End If

Sheets("Лист1").Select
If Range("P2") = 2 Then Range("P3").Select
If Range("P3") = 2 Then
Sheets("Петя").Select
Range("G3:K6").Select
Selection.Copy
Sheets("Лист1").Select
Range("G9").Select
ActiveSheet.Paste
End If


End Sub

При выполнении макроса почему-то происходит копирование и вставка данных исключительно с листа "Петя" даже когда по условию должно копироваться с "Вова". При разделении на два макроса все работает ок.
Для решения задачи необходим именно один макрос, в котором будет много листов источников данных и диапазонов (значения Р2 и Р3 будут меняться в диапазоне от 1 до 400).

Пожалуйста помогите понять, что необходимо исправить для исправления ошибки и реализации задачи!!!
Dima36668 вне форума Ответить с цитированием
Старый 18.02.2013, 15:54   #2
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Файлик приложи пожалуйста.
kalbasiatka вне форума Ответить с цитированием
Старый 18.02.2013, 16:26   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Код:
Select Case [P2]
Case 1 
  S = "Вова"
Case 2 
  S = "Петя"
Case Else
  S = ""
End Select

Select Case [P3]
Case 1 
  S1 = "B3:F6"
Case 2 
  S1 = "G3:K6"
Case Else
  S1 = ""
End Select

If S <> "" and S1 <> "" then
  Sheets(S).Range(S1).Copy [G9]
End If
Попробуйте так.

Цитата:
значения Р2 и Р3 будут меняться в диапазоне от 1 до 400
з.ы. Вы планируете использовать 400 листов?
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 19.02.2013, 15:00   #4
Dima36668
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 18
По умолчанию

Цитата:
Сообщение от DiemonStar Посмотреть сообщение
Попробуйте так.

з.ы. Вы планируете использовать 400 листов?
Большое спасибо, с небольшим количеством данных пока все ок, дальше буду пробовать.

Листов планируется десятка полтора, но с каждого листа при разных условиях будет копироваться разный диапазон данных и таких диапазонов будет не одна сотня.

Возможно задача имеет другое более простое решение, но я пока его не вижу((
Dima36668 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка? Dimabara Помощь студентам 1 16.11.2012 23:40
В чем ошибка? Ast4 Microsoft Office Excel 11 25.02.2011 16:07
В чем ошибка? Benderbej PHP 4 23.02.2011 00:50
В чем ошибка? Angelic_fiend Помощь студентам 12 02.06.2010 15:52
В чем ошибка? Smartbass Паскаль, Turbo Pascal, PascalABC.NET 1 28.05.2009 21:55