Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Hinweismeldung vor Ablaufdatum

Hinweismeldung vor Ablaufdatum
17.04.2008 10:07:38
Toxma
kann jemand helfen?
Im folgenden Code möchte ich einen Hinweis einbauen, der 3 Tage vor dem Ablauf einen Hinweis bringt und ich weiss nicht ob das geht. Der Hinweis soll, bzw. darf nicht bereits nach dem ersten öffnen der Datei erscheinen, wie jetzt, sondern eben 3 Tage vor Ablauf. Bei mir im Code erscheint der Hinweis sowie die Datei einmal geöffnet wurde bei jedem öffnen. Hab bis jetzt leider keine günstige Lösung gefunden.
Select Case ThisWorkbook.Sheets("Passwort").Range("C1")
Case ""
ThisWorkbook.Sheets("Passwort").Range("C1") = Date
Case Is < DateAdd("d", -10, Date)
If IsEmpty(ThisWorkbook.Sheets("(Quick-Check - Berechnung)").Range("S10")) Then
MsgBox "Sie sind nicht berechtigt diese Datei zu öffnen" _
' & vbCr & "bitte wenden Sie sich an den Programmersteller!"
' ActiveWorkbook.ChangeFileAccess xlReadOnly
' Kill ActiveWorkbook.FullName
' ThisWorkbook.Close False
Exit Sub
End If
Case Else
'hier wird der Hinweis angezeigt aber leider nicht erst 3 Tage vor Ablauf, sondern schon nach dem zweiten öffnen der Datei, wenn ein Datum eingetragen wurde. Dieser Hinweis soll aber nur genau 3 Tage vor Ablauf erscheinen.
tage = 3 - (Date - ThisWorkbook.Sheets("Passwort").Range("C1"))
' MsgBox "Nutzergruppe 'A' erkannt, noch " & CStr(tage) & " Tage bis Ablauf der Nutzungsdauer für A"
End Select
Vielen Dank
T.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wieso schon wieder?
17.04.2008 10:23:00
Toxma
Hallo Renee,
vielen Dank für den Hinweis. Hab das von Rudi vorgeschlagene probiert aber der Hinweis kommt trotzdem und dann weiss ich auch nicht genau, an welche Stelle das hingehört. Kannst Du mir da weiter helfen?
Ich hab das hier eingebaut:
tage = 3 - (Date - ThisWorkbook.Sheets("Passwort").Range("C1")) stattdessen
case is >=Date -3 aber da bekomme ich eine Fehlermeldung.
Gr. T.

AW: Wieso schon wieder?
17.04.2008 10:27:09
Renee
Hi Torge,
Ich hab dir aber geschrieben, dass

Case is >=Date -3
anstelle von
Case Else
gehört


GreetZ Renée

Anzeige
AW: Wieso schon wieder?
17.04.2008 11:10:10
Toxma
Hallo Renèe,
ok, hab dass jetzt so gemacht
Select Case i
Case 1
'[hier steht der Teil, der ggf übersprungen werden soll]
Select Case ThisWorkbook.Sheets("VB-fun-Demo").Range("B1")
Case ""
ThisWorkbook.Sheets("VB-fun-Demo").Range("B1") = Date
Case Is If IsEmpty(ThisWorkbook.Sheets("VB-fun-Demo").Range("D1")) Then
MsgBox "Nutzungsdauer überschritten für A Datei wirde jetzt geschlossen und gelöscht werden"
'ThisWorkbook.Close
End If
Case Is >= Date - 3
' tage = 30 - (Date - ThisWorkbook.Sheets("VB-fun-Demo").Range("B1"))
MsgBox "Nutzergruppe 'A' erkannt, noch " & CStr(tage) & " Tage bis Ablauf der Nutzungsdauer für A"
End Select
Trotzdem bekomme ich die Anzeige nicht erst 3 Tage vor Ablauf, sondern schon beim 2'ten öffnen. Was mach ich falsch? Die Meldung soll doch erst nach 7 Tagen also 3 Tage vor dem eigentlichen Ablauf erscheinen!
Gr. T.

Anzeige
AW: Wieso schon wieder?
17.04.2008 11:20:00
Renee
Hi Torge,
Das Gefrickel das du hier mit irgendwelchen Code-Fragmenten veranstaltest ist völlig undurchsichtig und macht es nicht einfach, dir zu helfen. Weisst du überhaupt wie ein Select Case Konstrukt aufgebaut ist und wie es funktioniert? Du testest eine Variable i und nach deinem Code steht da zwischen einem Integer-Wert einem leeren String und eine Datum alles mögliche drin.
Also poste mal den ganzen Code und zwar in einer lesbaren Form.

Für das ist der Zitat   Schalter  da!


GreetZ Renée

Anzeige
AW: Wieso schon wieder?
17.04.2008 11:49:03
Toxma
Hallo Renée,
ok, hier der ganze Code:

Private Sub cmdOK_Click()
Application.DisplayAlerts = 0
Dim fs
Set fs = CreateObject("Scripting.filesystemobject")
'ActiveSheet.Unprotect
On Error Resume Next
Static Fehler As Byte
Dim tage As Long
Dim user(1) As String      'Wenn mehr als 2 Benutzer zugelassen werden sollen
Dim Password(1) As String  'her entsprechend höher dimensionieren
Dim i As Long              'und in der Vor-Schleife der Zugangsprüfung berücksichtigen
Dim Zugang As Boolean
user(1) = "a"          'A Kunde hier den 1. Benutzernamen festlegen
Password(1) = "a"       'A Kunde hier Password für Benutzer 1 festlegen
'----Zugangsprüfung
Zugang = False
For i = 1 To 1
If Me.txtInput.Text = Password(i) And Me.TextBox1.Value = user(i) Then
Zugang = True
Exit For
End If
Next
Select Case i
Case 1
'hier wird die Seriennummer der Festplatte eingelesen
If Sheets("Passwort").Range("D1").Value = "" Then
seriennumerEinlesen
ElseIf Sheets("Password").Range("D1").Value  fs.drives("C").serialnumber Then
MsgBox "Sie sind nicht berechtigt diese Datei zu öffnen" ''_
'        & vbCr & "bitte wenden Sie sich an den Programmersteller!"
'        ActiveWorkbook.ChangeFileAccess xlReadOnly
'        Kill ActiveWorkbook.FullName
'        ThisWorkbook.Close False
Else: Sheets("Passwort").Range("D1").Value = fs.drives("C").serialnumber
MsgBox "Sie können die Datei weiter verwenden, Sie wurde von Ihnen bereits geöffnet."
End If
'Eintragung Wert A in Zelle B1 bei öffnen der Datei
Sheets("Passwort").Range("B1") = "A"
Select Case ThisWorkbook.Sheets("Passwort").Range("C1")
Case ""
ThisWorkbook.Sheets("Passwort").Range("C1") = Date
Case Is = Date - 3
'            Case Else
'                tage = 3 - (Date - ThisWorkbook.Sheets("Passwort").Range("C1"))
'                   Hinweis_erstellen
'                MsgBox "Nutzergruppe 'A' erkannt, noch " & CStr(tage) & " Tage bis Ablauf der  _
Nutzungsdauer für A"
End Select
'ActiveSheet.Protect
Application.ActiveWorkbook.Sheets("Tabelle1").Visible = True
End Select
If Zugang Then
'------ab hier ist der Code wieder unverändert----------------
m_blnCancel = False   'Status 'Abbrechen' = False setzen
Me.Hide               'UserForm ausblenden
Else
'Wenn ungültiges Passwort
'Inhalt der TextBox löschen und Fokus setzen
'        MsgBox "Ungültiges Passwort!", vbExclamation, Me.Caption
'        With Me.txtInput
'            .Text = ""
'            .SetFocus
'        End With
Fehler = Fehler + 1
If Fehler 


Vielen Dank für Deine Mühe
Gr T.

Anzeige
AW: Wieso schon wieder?
17.04.2008 11:51:00
Toxma
Hier noch mal eine Beispieldatei.
https://www.herber.de/bbs/user/51647.xls
User = a und Name = a bei öffnen bitte eingeben, ist mit Passwortabfrage.
T

AW: Wieso schon wieder?
17.04.2008 13:03:00
Rudi
Hallo,
das hat nichts mit Excel, sondern mit Logik zu tun.
Wenn B1 leer ist schreibst du das akt. Datum rein.
Beim nächsten Start prüfst du, ob B1>=Datum-3 ist. Das ist immer wahr, solange du die Datei nicht erst 4 Tage später öffnest.
Der Unsinn solcher Maßnahmen wurde hier schon hinlänglich diskutiert.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
aussichtslos...
17.04.2008 13:13:00
Renee
Hi Torge,
Wenn ich diesen Code anschaue, dann kann ich dir nur raten... Vergiss das Ganze.
Du kannst eine EXCEL Datei nie so schützen, dass sie aufgrund irgendwelcher äusseren Gegebenheiten nicht mehr 'lauffähig' ist. Deine Ideen mit Harddisk-Seriennummern, Passwörtern und best. User zulassen sind alle für die Katz. In diesem Forum hat es etliche Threads die sich mit dem Thema beschäftigen und alle kommen zum Schluss, mit EXCEL-Hilfsmitteln wird EXCEL nicht sicherer!
GreetZ Renée

AW: aussichtslos...
17.04.2008 14:06:00
Toxma
Hallo Renée,
alles klar, mir geht es nicht um Sicherheit absolut, sondern nur um einen sicher sehr einfachen Schutz. Aber gut, Danke für den Hinweis.
Bis demnächst.
T.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige