Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
756to760
756to760
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makros nur ausführen, wenn nicht schreibgeschützt

Makros nur ausführen, wenn nicht schreibgeschützt
24.04.2006 15:15:54
Ben
Hallo
Habe anhand von Forumsbeiträgen für eine Excel-Datei ein paar Makros hinterlegt. Z.B. wird automatisch angezeigt, wann das letzte mal gespeichert wurde und die Datei schliesst automatisch nach 10 Min. falls keine Änderung vorgenommen wurde.
Auf die Datei sollen verschiedene User zugreifen können; wenn schon geöffnet dann schreibgeschützt. Wie kann ich erreichen, dass die Makros im Falle, dass die Datei schreibgeschützt geöffnet wurde, nicht aktiviert werden?
Besten Dank für jeden Hinweis.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros nur ausführen, wenn nicht schreibgeschü
24.04.2006 17:08:30
Ramses
Hallo
in das Workbook.open Ereignis
If Thisworkbook.ReadOnly = True then
ReadGlobalState = True
Else
ReadGlobalState = False
End If
In ein Modul
Dim ReadGlobalState As Boolean
Allerdings, und darum kommst du nicht herum, musst du nun in jedem Makro den Status von "ReadGlobalState" abfragen.
In die erste Zeile eines Jeden Makros
if ReadGlobalState = True then Exit sub
Gruss Rainer
AW: Makros nur ausführen, wenn nicht schreibgeschü
25.04.2006 08:21:02
Benno
Hallo Rainer
Vielen Dank für den Tipp. Nur, wo geanau muss ich den Status von ReadGlobalState in die einzelnen Makros kopieren. Wenn ich ihn ganz zu Beginn einfüge, z.B. vor
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column &gt 13 Then Exit Sub
Kommt die Fehlermeldung: "Fehler beim Kompilieren. Ausserhalb einer Prozedur ungültig."
Wenn ich ihn nach
Private Sub Worksheet_Change(ByVal Target As Range)
einfüge kommt die Fehlermeldung
"Fehler beim Kompilieren Variable nicht definiert."
Und noch etwas: Wie könnte ich - falls ein User eine Änderung an der schreibgeschützten Datei vornehmen will eine Message-Box anzeigen z.b. mit der Meldung "Diese Datei ist schreibgeschützt - Änderungen können nicht gespeichert werden."
Danke und Gruss
Ben
Anzeige
AW: Makros nur ausführen, wenn nicht schreibgeschü
25.04.2006 16:16:30
Ramses
Hallo
Hast du es genau so gemacht wie ich geschrieben habe ?
In ein Modul !!!!
Dim ReadGlobalState As Boolean

Dann funktioniert der Aufruf immer, z.B.

Private Sub Worksheet_Change(Target as Range)
if ReadGlobalState = True then Exit sub
...Dein Code
End Sub

Die Zeile muss immer nach der ersten Zeile eines Makros stehen
Die Meldung "Schreibgeschützt" musst du nicht generieren, wenn die Datei Schreibgeschützt geöffnet wurde und der User speichern will, macht EXCEL die Meldung von sich aus.
Gruss Rainer
AW: Makros nur ausführen, wenn nicht schreibgeschü
26.04.2006 09:10:19
Benno
Hallo
Ich bilde mir ein, die Codes genau nach Deinen Anweisungen eingegeben zu haben. Trotzdem läuft das Ganze nicht. Habe die Datei deshalb hochgeladen:
https://www.herber.de/bbs/user/33118.xls
Könntest Du mal nachschauen woran es liegt.
Danke und Gruss
Benno
Anzeige
AW: Makros nur ausführen, wenn nicht schreibgeschü
28.04.2006 05:53:18
Mustafa
Hallo Benno, hallo Ramses,
ich wollte mich zwar nicht einmischen aber muss es nicht:
Public ReadGlobalState As Boolean
heißen?
Rückmeldung obs hilft wäre nett.
Viele Grüße aus Köln.
AW: Makros nur ausführen, wenn nicht schreibgeschü
28.04.2006 12:42:43
Benno
Hallo Mustafa
Herzlichen Dank für die "Einmischung" und den Tipp. Jetzt funktionierts.
Ich habe aber noch 3 andere Problempunkte:
Ich habe folgenden Code, um jeweils Benutzername und Datum/Zeit der letzten Änderung in Zeile 14 - 16 zu schreiben.

Private Sub Worksheet_Change(ByVal Target As Range)
If ReadGlobalState = True Then Exit Sub
If Target.Column > 13 Then Exit Sub
Cells(Target.Row, 15) = Date
Cells(Target.Row, 16) = Time
Cells(Target.Row, 14) = Application.Username
End Sub

Frage 1: Wie muss ich das ändern, damit nur Änderungen in gewissen Spalten (z.B. Nr. 1 und 10) mit Datum/Zeit und User protokolliert werden?
Frage 2: Die Idee wäre, dass der User gemäss dem Netzwerkkennwort in Spalte 14 geschrieben wird. Mit Application.Username scheint das nicht zu klappen. Bei mir zwar schon, bei anderen Usern aber nicht. Gibt es etwas "besseres" als Application.Username?
Frage 3: Mir ist aufefallen, dass die Funktion "rückgängig" in meiner Datei nicht möglich ist. Liegt das an den Makros und falls ja, gibt es einen VBA-Code, der diese Funktion wieder einschaltet?
Ich hoffe, das sind nicht zu viele Fragen.
Vielen Dank und Grüsse aus Basel
Benno
Anzeige
AW: Makros nur ausführen, wenn nicht schreibgeschü
28.04.2006 21:20:59
Gerd

Private Sub Worksheet_Change(ByVal Target As Range)
If ReadGlobalState = True Then Exit Sub
If Target.Column = 1 or Target.Column = 10 Then
Cells(Target.Row, 15) = Date
Cells(Target.Row, 16) = Time
Cells(Target.Row, 14) = Environ.Username
end if
End Sub

"Frage 3: Mir ist aufefallen, dass die Funktion "rückgängig" in meiner Datei nicht möglich ist. Liegt das an den Makros und falls ja, gibt es einen VBA-Code, der diese Funktion wieder einschaltet?"
Nein!
mfg Gerd

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige