Problem mit UserInterfaceOnly:=True?

Antwort erstellen

Smilies
:D :) :( :o :shock: :? 8-) :lol: :x :P :razz: :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :badgrin: :doubt:
BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet
Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Problem mit UserInterfaceOnly:=True?

Re: Problem mit UserInterfaceOnly:=True?

Beitrag von 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

Re: Problem mit UserInterfaceOnly:=True?

Beitrag von 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.

Re: Problem mit UserInterfaceOnly:=True?

Beitrag von 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

Problem mit UserInterfaceOnly:=True?

Beitrag von 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

Nach oben