Kann ich bei einer Bearbeitung automatisch ein Makro ausführen, anstatt eine Anwendung erneut öffnen zu müssen?

Kann ich bei einer Bearbeitung automatisch ein Makro ausführen, anstatt eine Anwendung erneut öffnen zu müssen?

Ich habe zwei Tabellenblätter und möchte, dass das zweite Tabellenblatt aktualisiert wird, sobald jemand das erste Tabellenblatt ändert. Ich kann das mit einer einfachen if-Anweisung tun, aber es wird erst aktualisiert, wenn die Person, die an dem ersten Blatt arbeitet, es schließt und erneut öffnet.

Ist es möglich, dies automatisch zu tun?

Antwort1

Aus dem Kommentar zu einer gelöschten Antwort erkenne ich, dass die zu aktualisierenden Tabellen auf anderen Rechnern liegen. Diese Aktualisierung ist meiner Meinung nach nicht möglich, es sei denn, man schreibt ein Makro für die Remote-Tabellen, das regelmäßig das Änderungsdatum der Quelltabelle überprüft und sich bei Bedarf selbst aktualisiert. Das Dokument muss in diesem Fall auf einer öffentlichen Netzwerkfreigabe liegen und die Arbeit ist alles andere als einfach.

Wenn alle Benutzer Zugriff auf das Internet haben, können Sie auch eine Online-Tabelle verwenden, um gemeinsam an nureinsTabellenkalkulation. Es gibt verschiedene Online-Produkte, auch kostenlose, die diesen Zweck erfüllen können.

Geben Sie uns dazu nähere Einzelheiten zu Ihrem Umfeld und den darin gewünschten bzw. möglichen Umgebungsbedingungen bekannt.

Antwort2

Sie können ein worksheet_change-Makro auf der ersten Tabelle festlegen, das die zweite Tabelle aktualisiert. Der Code würde ungefähr so ​​aussehen:

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

verwandte Informationen