Копировать и вставлять строки, соответствующие условию, когда кнопка нажата в другой книге - PullRequest
0 голосов
/ 31 октября 2011

Я не эксперт по VBA, поскольку недавно начал изучать это.

Интересно, возможно ли следующее.

У меня есть несколько рабочих книг с тремя рабочими листами (Старый,Summary, New).

Условие состоит в том, что все ячейки в столбце D со значением H или M на листе с именем New будут указывать, что всю строку необходимо скопировать на лист с именем Summary в том же самомworkbook.

Упомянутое выше должно произойти, когда нажата кнопка из другой книги, и в идеале имя файла / книги должно быть изменяемым, чтобы я мог выбрать, какую книгу я хочу запустить в макросе.

В идеале в рабочей книге с данными не должно быть макросов, все макросы следует запускать из второй рабочей книги с помощью кнопки.

Буду признателен за пример кода с комментариями (чтобы я мог учиться)если это возможно и не слишком сложно.

Пожалуйста, не стесняйтесь задавать вопросы, если что-то неясно ...

ОБНОВЛЕНИЕ

Вот макрос, который мне удается составить, глядя на разные коды

Sub CopyPaste()

Set NewWorkPlan = Sheets("New Workplan")
Set NewExecSummary = Sheets("New Exec Summary")
Dim d
Dim j

d = 1
j = 2

Do Until j = 200

  If NewWorkPlan.Range("D" & j) = "M" Or NewWorkPlan.Range("D" & j) = "H" Then
    d = d + 1
    NewExecSummary.Rows(d).Value = NewWorkPlan.Rows(j).Value

  End If
  j = j + 1
 'MsgBox (j)

Loop    

End Sub

Это прекрасно работает для меня, и сделать шаг вперед яхотелось бы иметь возможность выполнить это из другой рабочей книги, оставив целевой макрос рабочей книги свободным.

Проблема в том, что рабочая книга, для которой я хочу запустить макрос, будет общедоступной, и я не думаю, что вы сможете это сделать.запустить макросы.

1 Ответ

1 голос
/ 01 ноября 2011

Просто измените ссылки на нужную книгу, и она должна работать нормально (если открыта другая книга, но если это не так, вы также можете открыть ее из кода.

Справка:

Set NewExecSummary = Workbooks("TargetWorkbook").Sheets("New Exec Summary")
...