Zelle nach x Sekunden entsperren
#11
Man kann jeder User ein eigenes Such-workbook geben.
Suchen kann in einer separate Datei stattfinden.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#12
Hallo, wäre das so richtig?
Diesen Code muss ich doch in das Datenblatt einfügen?

Private Sub Worksheet_Change(ByVal Target As Range)

Public strTarget As String
If Target.Address = "$C$1" And Target.Value = "" Then Exit Sub
If Target.Address = "$C$1" And Target.Value > 0 Then Target.Locked = True
strTarget = Target.Address
Application.OnTime Now + TimeValue("00:00:60"), "Freigeben"

End Sub


Sub Freigeben()
Range(strTarget).Locked = False
End Sub


Wäre das richtig?
Top
#13
Hallo,

nicht ganz. Die Zeile mit der Variablendekleration gehört außerhalb der Prozedur.

Code:
Private strTarget As String 'als Private,da Public nur in einen allgemeinen Modul stehen sollte

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$C$1" And Target.Value = "" Then Exit Sub
If Target.Address = "$C$1" And Target.Value > 0 Then Target.Locked = True
strTarget = Target.Address
Application.OnTime Now + TimeValue("00:00:60"), "Freigeben"

End Sub


Sub Freigeben()
Range(strTarget).Locked = False
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#14
Hi, ich habe folgendes gemacht..


Diesen Code habe ich in Tabellenblatt mit dem Name (OFFEN) eingefügt.

Private Sub Worksheet_Change(ByVal Target As Range)

'
On Error Resume Next


'Wenn Erledigt dann Datum
If Target.Column = 45 Or Target.Column = 48 Or Target.Column = 51 Or Target.Column = 54 Then
    If Target.Value = "Erledigt" Then
       Target.Locked = True
       Target.Offset(0, 1).Value = Date
       Sheets("OFFEN").Unprotect password:="159357junk"
       Target.Offset(0, -1).Select
       Selection.Locked = True
    Else
       Sheets("OFFEN").Protect password:="159357junk", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True  'Blattschutz aktivieren
       Exit Sub
    End If
End If



If Target.Address = "$C$1" And Target.Value = "" Then Exit Sub

If Target.Address = "$C$1" And Target.Value > 0 Then
    Sheets("OFFEN").Unprotect password:="159357junk"
    Target.Locked = True
    strTarget = Target.Address
    Application.OnTime Now + TimeValue("00:00:60"), "Freigeben"
End If


On Error GoTo 0
End Sub

Sub Freigeben()
Range(strTarget).Locked = False
End Sub

und den Code in ein allgemeines Modul1

Private strTarget As String 'als Private,da Public nur in einen allgemeinen Modul stehen sollte

So?
Top
#15
Hallo,

ich habe nicht vermutet, dass du die Variable in einem allgemeinen Modul deklarierst, da heißt es natürlich Public anstelle von Private.
Gruß Stefan
Win 10 / Office 2016
Top
#16
Hallo Steffan,
Ich habe statt Privat auf Public geändert. Die Zelle C1 wird geschützt doch nach 60 sec. nicht wieder entsperrt.
Kann es daran liegen das die Tabelle Passwort geschützt ist?
Top
#17
Hallöchen,

... wenn Du nicht, wie ich beschrieben habe, UserInterfaceOnly = True gesetzt hast ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#18
Hallo Steffan du bist echt klasse!!!

Hab's geschafft und es funktioniert super. Danke noch mal :19:

Hallo, 
in welchen Abschnitt sollte den "UserInterfaceOnly = True" gesetzt werden? und wo für steht das?
Top
#19
Hallöchen,

siehe hier: #8

und dann wo es passt ActiveSheet.Protect ... UserInterfaceOnly = True
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste