2016-08-05 8 views
6

Ich habe ein Excel-Dokument mit Makros mit Eingabe- und Aktualisierungsformularen für Informationen, das Dokument wird als monatliche Datenbank verwendet, in der Sie Berichte auch ausführen können.Gemeinsames Excel-Dokument

Das Problem ist, dass bei der Verwendung des Dokuments manchmal die Eingabe- und Aktualisierungsoptionen gleichzeitig verwendet werden, was zu Informationsverlust führt. Sowohl die Eingabe als auch die Ausgabe speichern am Ende des Makros, um die Verluste zu minimieren, aber ich frage mich, ob es sowieso zur Laufzeit prüft, ob ein Makro von einem anderen Benutzer verwendet wird und wenn ja, den nächsten Makrolauf bis zum anderen verzögert Benutzer ist fertig?

+1

Gute Frage ... Hatte mich für einige Zeit denken :) –

Antwort

2

Es gibt eine Möglichkeit, die ich mir vorstellen kann. Logisch sollte es funktionieren. Allerdings habe ich nicht getestet es.

  1. erstellen Blatttemperatur und verstecken es
  2. Wenn jemand ein Makro ausgeführt wird, überprüfen Sie, ob die Zelle A1 dieses Blattes leer ist oder nicht
  3. Wenn es leer ist, dann das Makro
  4. laufen die vor dem Einlaufen Makro, zu dieser Zelle schreiben und sobald das Makro ausgeführt wird, deaktivieren Sie die Inhalte der anderen Zelle
  5. Sandwich Ihr Makrocode wie unten erwähnt

-Code

Sub Sample() 
    Dim ws As Worksheet 

    ThisWorkbook.Save 
    Doevents 

    Set ws = ThisWorkbook.Sheets("HiddenSheetName") 

    If Len(Trim(ws.Range("A1").Value)) = 0 Then 
     ws.Range("A1").Value = "Macro Starts" 
     ThisWorkbook.Save 
     Doevents 

     ' 
     '~~> Rest of your code goes here 
     ' 

     ws.Range("A1").ClearContents 
     ThisWorkbook.Save 
     Doevents 
    Else 
     MsgBox "Please try after some time. There is a macro running... Blah Blah" 
    End If 
End Sub 

ACHTUNG: Sobald der Code ausgeführt wird, die Sie seit dem Code die Änderungen nicht mehr rückgängig machen kann programmatisch die Datei speichern. Die Änderungen sind dauerhaft. In einer Datei, die nicht freigegeben ist, können Sie die Datei rückgängig machen, indem Sie die Datei schließen, ohne sie zu speichern und erneut zu öffnen.

+0

https://en.wikipedia.org/wiki/Semaphore_(Programmierung) –

+0

Oh, das wirklich genial, darüber nachgedacht für eine Woche ohne Erfolg und du hast so schnell und einfach etwas so Einfaches und Elegantes. Vielen Dank. @Siddharth Rout –

+0

Haben Sie es getestet, wie ich es nicht getestet habe ... @SaraC –

Verwandte Themen