Можно ли автоматически запускать макрос при редактировании, вместо того чтобы заново открывать приложение?

Можно ли автоматически запускать макрос при редактировании, вместо того чтобы заново открывать приложение?

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

Можно ли сделать это автоматически?

решение1

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

Другой вариант, если все пользователи имеют доступ к Интернету, — использовать онлайн-таблицу для совместной работы надодинэлектронная таблица. Существуют различные онлайн-продукты, даже бесплатные, которые могут служить этой цели.

Вам следует предоставить нам более подробную информацию о вашей среде и о том, что в ней желательно или возможно.

решение2

Вы можете установить макрос worksheet_change на первой таблице, который обновит вторую таблицу. Код будет выглядеть примерно так:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim wbk2 As Workbook, wbk1 As Workbook, sht1 As Worksheet, sht2 As Worksheet

Set wbk1 = ActiveWorkbook
Set sht1 = ActiveSheet

on error resume next 
set wkb2=workbooks("myfile.xlsx")
if err<>0 then
    err.clear
    Set wbk2 = Workbooks.Open("\\remotecomputer\folder\myfile.xlsx")
end if
on error goto 0

Set sht2 = wbk2.Sheets("mySheet2")

sht2.Cells(1, 1) = "I have updated range " & Target.Address & " in sheet " & sht1.Name & " to value " & Target.Value

wbk2.Close True

End Sub

Связанный контент