Problem mit UserInterfaceOnly:=True?

Moderator: ModerationP

Problem mit UserInterfaceOnly:=True?

Beitragvon tapete86 » 19. Sep 2021, 00:22

Hallo zusammen,

ich möchte eine Checkliste erstellen, die nicht verändert werden darf.
Der Benutzer hat die Erlaubnis in Spalte "F" eigene Kommentare hinzuzufügen.
In Spalte "G" wird durch einen Doppelklick des Benutzers dessen Name und das Datum in die Zelle automatisch eingetragen.
Alle anderen Zellen sollen durch den Benutzer nicht verändert werden können.
Hierfür rufe ich in "Workbook_Open" ein Makro auf, welches mir alle Seiten Protected.
Hier wird mit UserInterfaceOnly:=True gearbeitet -> Es sollen Änderungen durch Makros erlaubt sein.

Code: Alles auswählen
    'Loop through all worksheets
2   For Each objWorksheet In ThisWorkbook.Worksheets
        'Use worksheet
3       With objWorksheet
4           Debug.Print "Sheet:        " & .Name
5           Debug.Print "Protected:    " & .ProtectionMode
6           Debug.Print "Comment area: " & g_strLocCommentColumn & g_lngStartRow & ":" & g_strLocCommentColumn & GetLastRowOverAll(.Name)
7           Debug.Print ""               
            'Protect sheet
8           .Protect Password:="xxx", UserInterfaceOnly:=True
            'Allow grouping
9           .EnableOutlining = True
            'Protect cell
10          .Cells.Locked = True     
            'Unlock comment column
11          .Range(g_strLocCommentColumn & g_lngStartRow & ":" & g_strLocCommentColumn & GetLastRowOverAll(.Name)).Locked = False
12      End With
13  Next


Nun zu meinem Problem.... Meine Makros Funktionieren soweit...
Allerdings bekomme ich NACH Beendigung der Makros immer den Fehler: "The cell or chart you´re trying to change is on a protected sheet."
Wie gesagt, die Makros werden ganz normal ausgeführt. Führ mich sieht es so aus, also ob Excel irgend eine validation im Anschluss der Makros ausführt was dann zu diesem Fehler führt.

Ich wäre euch sehr dankbar, wenn sich dies mal einer anschauen könnte.
Testen könnt ihr das ganze, indem ihr einfach z.B. in Zelle G23 einen Doppelklick macht.

MfG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
tapete86
Neuling
 
Beiträge: 2
Registriert: 19. Sep 2021, 00:01

Re: Problem mit UserInterfaceOnly:=True?

Beitragvon slowboarder » 19. Sep 2021, 07:12

Durchaus möglich.
Kommt bei verschiedenen Aktionen vor, dass diese erst mit Beendigung des Makros wirksam werden.
Die Vorgehensweise ist in diesem Fall:

1. führe im WorbookOpen nur das Setzen des Blattschutzes durch und schreibe alle anderen Aktionen in ein normales Makro in einem allgemeinen Modul.

2. Am Ende des WorkbookOpen-Events rufst du dann dieses Makro auf mit
Code: Alles auswählen
Applications.Ontime Now, "Makroname"

Durch diesen Aufruf wird das Makro erst ausgeführt, wenn das aufrufende Makro sowie alle weiteren laufenden Prozesse abgeschlossen sind.

Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28569
Registriert: 18. Apr 2009, 13:33

Re: Problem mit UserInterfaceOnly:=True?

Beitragvon tapete86 » 19. Sep 2021, 10:14

Danke für deine Antwort.

ich habe deinen Ansatz mal versucht (falls ich es richtig verstanden habe) aber mit dem selben Ergebnis, es kommt wieder der Fehler.
Ich möchte ja aber den Namen+Datum nur bei einem Doppelklick erhalten und nicht direkt im WorbookOpen Event.
Darum habe es auch im Event Worksheet_BeforeDoubleClick versucht :

Code: Alles auswählen
Private Sub Worksheet_BeforeDoubleClick(ByVal rng_Target As Range, Cancel As Boolean)
    'Declare variables
    Dim lngLastRow As Long
    'Use worksheet
1   With ThisWorkbook.Worksheets(rng_Target.Worksheet.Name)
        'Get last row
2       lngLastRow = GetLastRowOverAll(.Name)
        'Done area selected?
3       If Not Intersect(rng_Target, .Range(g_strLocDateUserColumn & g_lngStartRow, g_strLocDateUserColumn & lngLastRow)) Is Nothing Then
            'Create evidence in cell
'4           CreateEvidenceInCell
4           Applications.OnTime Now, "CreateEvidenceInCell"
5       End If
6   End With
End Sub


Ich habe die Datei auf das benötigte gekürzt. Ich wäre dir wirklich sehr dankbar, wenn du es mal versuchen könntest.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
tapete86
Neuling
 
Beiträge: 2
Registriert: 19. Sep 2021, 00:01

Re: Problem mit UserInterfaceOnly:=True?

Beitragvon HKindler » 20. Sep 2021, 09:29

Hi,

du benutzt in deinem Blatt das Event Private Sub Worksheet_BeforeDoubleClick(ByVal rng_Target As Range, Cancel As Boolean) Das ist auch OK, allerdings sollte man berücksichtigen, dass ein Doppelklick normalerweise bewirkt, dass man sich danach in der Zelle befindet um irgendwas einzugeben. Und genau das wird durch die Fehlermaledung angezeigt und unterdrückt.

Abhilfe: setzte im Event an geeigneter Stelle (nämlich dort, wo du das Datum einträgst bzw. löschst, also nach CreateEvidenceInCell) Cancel = True
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6457
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Klaus-Dieter und 5 Gäste