Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1044to1048
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Wie kann ich hier eine Schleife ...
02.02.2009 11:29:00
Thomas
Hi Profis,
Wie kann ich hier eine Schleife einbauen sodas das Passwort nur einmal eingegeben wird und die Tabelle somit für einen Zeitraum von ca 60minuten freigeben wird. Den Code hab ich hier aus dem Archiv und an meine Bedürfnisse mit basteln angepasst. Er überwacht einen Zellbereich und gibt immer nur selektierte Zellen bei richtiger Eingabe frei. Nur nerven diese PW Abfragen wenn mehrere Eingaben nacheinander erfolgen. Aber ich möchte nicht darauf verzichten da die Tab.Schutzmechanismen schon ausgereizt sind.

Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim a
If Not Intersect(target, Range("F13:AP90")) Is Nothing Then
Application.EnableEvents = False
a = InputBox("Passwort bitte? - (Keine Zahlen)")
If a  Range("Y5") Then Application.Worksheets("002").Range("J5").Select
End If
Application.EnableEvents = True
End Sub


Bin für jede Hilfe Dankbar und freu mich schon auf viele Tips.
Gruss Thomas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie kann ich hier eine Schleife ...
02.02.2009 11:45:00
Tino
Hallo,
teste mal diese Version.
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Static meTimer As Single, a
Application.EnableEvents = False

If Not Intersect(target, Range("F13:AP90")) Is Nothing Then
  If a = "" Or meTimer < Now Then
     a = InputBox("Passwort bitte? - (Keine Zahlen)")
  End If
 
    If a <> Range("Y5") Then
     Application.Worksheets("002").Range("J5").Select
     meTimer = Now + TimeSerial(1, 0, 0)
    End If
End If

Application.EnableEvents = True
End Sub


Gruß Tino

Anzeige
Korrektur!
02.02.2009 11:53:00
Tino
Hallo,
so ist es richtig.
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal target As Range)
Static meTimer As Date, a
Application.EnableEvents = False

If Not Intersect(target, Range("F13:AP90")) Is Nothing Then

  If a <> Range("Y5") Or meTimer < Now Then
     a = InputBox("Passwort bitte? - (Keine Zahlen)")
  End If
 
    If a <> Range("Y5") Then
     Application.Worksheets("002").Range("J5").Select
     meTimer = Now + TimeSerial(1, 0, 0)
    End If
End If

Application.EnableEvents = True
End Sub


Gruß Tino

Anzeige
AW: Korrektur! ich gehe nochmal ins Bett ;-)
02.02.2009 11:59:42
Tino
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Static meTimer As Date, a
Application.EnableEvents = False

If Not Intersect(target, Range("F13:AP90")) Is Nothing Then

    If a <> Range("Y5") Or meTimer < Now Then
       a = InputBox("Passwort bitte? - (Keine Zahlen)")
       meTimer = Now + TimeSerial(1, 0, 0)
    End If
 
    If a <> Range("Y5") Then
     Application.Worksheets("002").Range("J5").Select
    End If

End If

Application.EnableEvents = True
End Sub


Anzeige
AW: Wie kann ich hier eine Schleife ...
02.02.2009 12:02:56
Thomas
Hi Tino,
TimeSerial(1, 0, 0) bedeutet h m s ?
Danke funzt prima.
AW: Wie kann ich hier eine Schleife ...
02.02.2009 12:20:02
Tino
Hallo,
Aus der Hilfe
TimeSerial-Funktion
Gibt einen Wert vom Typ Variant (Date) zurück, der die Uhrzeit für eine bestimmte Stunde, Minute und Sekunde enthält.
Syntax
TimeSerial(hour, minute, second)
PS. Versuche meinen letzten oder den von fcs.
Gruß Tino
AW: Wie kann ich hier eine Schleife ...
02.02.2009 11:53:00
fcs
Hallo Thomas,
müsste etwa so funktionieren, wenn du den Zeitpunkt des nächsten PW-Checks in einer Variablen speicherts.
Gruß
Franz

Private datNextPWCheck As Date 'Zeitpunkt des nächsten PW-Checks
Private Sub Worksheet_SelectionChange(ByVal target As Range)
Dim a
If Not Intersect(target, Range("F13:AP90")) Is Nothing Then
Application.EnableEvents = False
If Now > datNextPWCheck Then
a = InputBox("Passwort bitte? - (Keine Zahlen)")
If a  Range("Y5") Then
Application.Worksheets("002").Range("J5").Select
Else
datNextPWCheck = Now + TimeSerial(0, 30, 0) '30 Minuten bis zur nächsten PW-Abfrage
End If
Else
End If
End If
Application.EnableEvents = True
End Sub


Anzeige
AW: Wie kann ich hier eine Schleife ...
02.02.2009 12:36:13
Thomas
Hi fcs,
für "wenn du den Zeitpunkt des nächsten PW-Checks in einer Variablen speicherts" reichen meine Kenntnisse leider noch nicht aus. Ich bin aus dem Bastlerstadium noch nicht rausgekommen.
jetzt versuch erstmal die beiden lösungen ins bastler vba für mich zu übersetzen um zu verstehen was da eigentlich passiert wenn die bedingungen erfüllt sind.
ich danke euch beiden für die extrem schnelle hilfe. danke
Gruss Thomas
AW: Wie kann ich hier eine Schleife ...
02.02.2009 16:24:00
fcs
Hallo Thomas,
die Variable wird im Tabellenmodul (ganz zu Beginn vor allen Prozeduren) deklariert. So ist sie für alle Prozeduren im Modul verfügbar und - das ist das besondere- sie behält nach der Ausführung ihren Wert. Somit steht dieser beim nächsten Aufruf der Prozedur als Vergleichswert zur Verfügung.
Alle Variablen, die innerhalb einer Prozedur per Dim .. deklariert sind werden zu Beginn der Ausführung immer auf ihren Standardwert gesetzt ("", 0, Leer oder Nothing - je nach Variablen-Typ).
Gruß
Franz
Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige