Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Verfalsdatum Excelmakro | Herbers Excel-Forum


Betrifft: Verfalsdatum Excelmakro von: Nessig
Geschrieben am: 27.03.2012 09:19:59

Hallo zusammen,
mit Hilfe eines anderen Entwickler haben wir ein Makro für ein sogenanntes Verfallsdatum entwickelt. Ziel des Makro soll es sein, das ab ein bestimmten Datum der Benutzer der Excelberechnung ein Passwort eingeben muß. Sollte er diese passwort nicht haben, soll sich die Exceldatei schließen. Aber der Benutzer mit ein Passwort soll auch das Gültigkeitsdatum nach Eingabe des Passwortes ändern können.
Das Makro sieht so aus:

Private Sub Workbook_Open()
    Dim wks As Worksheet
    Dim verfall As Date
    verfall >= CDate("13.08.2008") 'Datum setzen, ab dem das Zugangswort erfragt werden soll _
(bis zu diesem Datum ist die Mappe ohne Zugangswort zu öffnen!)
 
If Date >=CDate 'wenn Datum größer oder gleich in "CDate" gesetztes Datum _
dann Passwort/Zugangswort Abfrage
PW = InputBox("Die Testphase ist abgelaufen," _
   & vbCr & "Zugang nur mit Passwort möglich!", "Info")
End If

Select Case PW
'Zugangswort/wörter vergeben
Case "Test", "Test2", "Test3" ' es sind auch mehrere Zugangswörter möglich!
 
'Wenn ein falsches Zugangswort verwendet wird
Case Else
If Date >= CDate ' wenn Datum größer oder gleich in "CDate" gesetztes Datum _
dann Infobox starten und Datei schließen
MsgBox "Die Datei wird geschlossen!", vbCritical + vbOKOnly, "Falsches Kennwort"
ActiveWorkbook.Close savechanges:=False
End If
End Select
End Sub

Dieses Makro zeigt uns immer wieder Fehler an. Kann uns einer hier helfen?

  

Betrifft: AW: Verfalsdatum Excelmakro von: Matthias L
Geschrieben am: 27.03.2012 09:35:25

Hallo

Überall IF ohne Then !
PW nicht deklariert als String

probier mal so:

Option Explicit

Private Sub Workbook_Open()
Dim wks As Worksheet, PW$
Dim verfall As Date

verfall = CDate("13.08.2008") 'Datum setzen, ab dem das Zugangswort erfragt werden soll(bis zu  _
diesem Datum ist die Mappe ohne Zugangswort zu öffnen!)
 
If Date >= verfall Then 'wenn Datum größer oder gleich in "CDate" gesetztes Datum dann Passwort/ _
Zugangswort Abfrage
 PW = InputBox("Die Testphase ist abgelaufen," & vbCr & "Zugang nur mit Passwort möglich!", " _
Info")
End If

Select Case PW
 'Zugangswort/wörter vergeben
Case "Test", "Test2", "Test3" ' es sind auch mehrere Zugangswörter möglich!
'Wenn ein falsches Zugangswort verwendet wird
Case Else
 If Date >= verfall Then ' wenn Datum größer oder gleich in "CDate" gesetztes Datum dann  _
Infobox starten und Datei schließen
  MsgBox "Die Datei wird geschlossen!", vbCritical + vbOKOnly, "Falsches Kennwort"
  ActiveWorkbook.Close savechanges:=False
 End If
End Select

End Sub
Gruß Matthias


  

Betrifft: besser DateSerial anstatt CDate oder DateValue ... von: Tino
Geschrieben am: 27.03.2012 10:15:03

Hallo,
wegen der Sprachregion würde ich versuchen auf
CDate oder DateValue bei dieser Art der Verwendung zu verzichten!

verfall = DateSerial(2008, 8, 13)

Gruß Tino


  

Betrifft: AW: besser DateSerial anstatt CDate oder DateValue ... von: Nessig
Geschrieben am: 27.03.2012 11:08:17

Hallo zusammen,
ich hab das Problem mit dem Makro gelöscht


  

Betrifft: Gelöscht oder gelöst? ;-) von: Luc:-?
Geschrieben am: 27.03.2012 18:03:01

Hi, Nessig;
wie sieht's aus? Hattest du bemerkt, dass die Forumssoftware dem Matthias 'nen Streich gespielt und den Zeilenfortsetzungstiefstrich einfach in einen Text hineingesetzt hat, was dann zum Syntaxfehler führt?
Ansonsten ist das, was ihr da vorhabt doch geradezu harmlos für einen nur etwas versierten XlNutzer. Da müsstet ihr schon wesentl brutaler vorgehen → alle dbzgl relevanten, auffälligen Codeteile obfuszieren (dafür eignet sich die vbFkt CallByName in Verbindung mit einer eigenen Kryptisierungsfkt für En-/DeCode, Ansicht-Bsp im Archiv) und bei Terminüberschreitung die Datei unbrauchbar machen. Auch das ist sicher kein 100%iger, aber wahrscheinl doch ein 90%iger Schutz.
Gruß Luc :-?


  

Betrifft: AW: Verfallsdatum Excelmakro von: Nessig
Geschrieben am: 27.03.2012 10:47:13

Hallo zusammen,
ab PW=InputBox wird "Fehler beim Kompilieren" Syntaxfehler angezeigt


  

Betrifft: AW: Verfalsdatum Excelmakro von: Rudi Maintaire
Geschrieben am: 27.03.2012 10:51:40

Hallo,
Aber der Benutzer mit ein Passwort soll auch das Gültigkeitsdatum nach Eingabe des Passwortes ändern können.
Bau dir ein Sheet ein, dessen Visible-Eigenschaft du im VBE auf xlSheetVeryHidden setzt. Da kannst du das neue Datum rein setzen. Das Blatt kann nur noch über den VBE eingeblendet werden. Aber wenn jemand das VBA-Kennwort aushebelt ist sowieso alles fürn Eimer.
Was ist, wenn der User das Makro unterbricht oder die Mappe mit deaktivierten Makros startet? Da hast du noch zu tun.

Private Sub Workbook_Open()
  Dim PW
  Dim dteVerfall As Date
  dteVerfall = Sheets("verstecktesBlatt").Range("A1") 'Datum setzen, ab dem das Zugangswort  _
erfragt werden soll _
    (bis zu diesem Datum ist die Mappe ohne Zugangswort zu öffnen!)
  
  If Date > dteVerfall Then 'wenn Datum größer oder gleich in "CDate" gesetztes Datum _
    dann Passwort/Zugangswort Abfrage
    PW = InputBox("Die Testphase ist abgelaufen," _
      & vbCr & "Zugang nur mit Passwort möglich!", "Info")
    Select Case PW
      Case "Test", "Test2", "Test3"
        'nix passiert
      Case Else
        'Wenn ein falsches Zugangswort verwendet wird
        'dann Infobox starten und Datei schließen
        MsgBox "Die Datei wird geschlossen!", vbCritical + vbOKOnly, "Falsches Kennwort"
        Me.Close savechanges:=False
    End Select
  End If
End Sub

Sub NeuesDatumSetzen()
  Dim myDate
  myDate = InputBox("Neues Datum?", , Date + 10)
  If IsDate(myDate) Then
    Sheets("verstecktesBlatt").Range("A1") = CDate(myDate)
  End If
End Sub

Gruß
Rudi