#excel #vba #excel-2003
#excel #vba #excel-2003
Вопрос:
Я не эксперт по VBA, поскольку недавно начал изучать это.
Интересно, возможно ли следующее.
У меня есть несколько книг с тремя рабочими листами (старый, Краткий, Новый).
Условие состоит в том, что все ячейки в столбце D со значением H или M на листе с именем New будут указывать, что вся строка должна быть скопирована на листе с именем Summary в той же книге.
Это, упомянутое выше, должно происходить при нажатии кнопки из другой книги, и в идеале имя файла / книги должно быть изменяемым, чтобы я мог выбрать, в какой книге я хочу запустить макрос.
В идеале в книге с данными не должно быть никаких макросов, все макросы должны запускаться из второй книги с помощью кнопки.
Я был бы признателен за пример кода с комментариями (чтобы я мог учиться), если это возможно и не слишком сложно.
Пожалуйста, не стесняйтесь задавать какие-либо вопросы, если что-то неясно…
Обновить
Вот макрос, который мне удается создать, просматривая разные коды
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" amp; j) = "M" Or NewWorkPlan.Range("D" amp; 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. Вам действительно следует хотя бы попробовать это самостоятельно, а затем опубликовать здесь, когда вы застряли, вместо того, чтобы просто запрашивать код.
2. @Reafidy: Я согласен, и я пытаюсь самостоятельно читать фрагменты кода здесь и там, но я пока не смог ничего написать сам, и я уже неделю пытаюсь разобраться самостоятельно, поэтому я решил обратиться за помощью здесь. В любом случае, я все еще работаю сам по себе. Спасибо за ваш комментарий.
Ответ №1:
Просто измените свои ссылки на нужную вам книгу, и она должна работать нормально (пока открыта другая книга, хотя, если это не так, вы также можете открыть ее из кода.
Ссылка:
Set NewExecSummary = Workbooks("TargetWorkbook").Sheets("New Exec Summary")