Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

VBA Zellenüberwachung + Schutz - UPDATE

VBA Zellenüberwachung + Schutz - UPDATE
17.05.2013 09:20:47
Tim
Hey Leute,
ich habe getsern von "Rudi Maintaire" einen VBA-Code erhalten, der auch wirklich super ist.
[code]
Private Sub Worksheet_Change(ByVal Target As Range)
Const strPW As String = "test123"
If Not Intersect(Target, Range("A:AK")) Is Nothing Then
On Error GoTo ERREXIT
Application.EnableEvents = False
If Target.Count > 1 Then
If Target.Count = Columns.Count Then
'ganze Zeile
If Application.InputBox("Passwort")  strPW Then
MsgBox "test"
Application.Undo
End If
Else
'mehrere Zellen ausgewählt
Application.Undo
End If
Else
If Target.Column = 1 Then
'Änderung in A
If Target  "" Then
If Target  strPW Then
MsgBox "test"
Application.Undo
End If
End If
End If
Else
'Änderung in B:AK
If Cells(Target.Row, 1) = "" Then
'A leer
Application.Undo
Else
If Cells(Target.Row, 1)  "" Or _
Cells(Target.Row, 4)  "" Then
If Application.InputBox("Passwort")  strPW Then
MsgBox "test"
Application.Undo
End If
End If
End If
End If
End If
End If
ERREXIT:
Application.EnableEvents = True
End Sub

[/code]
Allerdings wollte ich jetzt eine kleine Änderung einbauen und weiß nicht wie.
Ich will das Spalte G von dieser Überwachung + Schutzt außen vor bleibt. Also:
Spalte A:F & H:AK

Da ich nicht weiß, ob jemand meinen Post unten ließt mache ich einen neuen Beitrag auf, biite nicht schimpfen! ;-)
LG

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Zellenüberwachung + Schutz - UPDATE
17.05.2013 09:41:36
Tino
Hallo,
versuch mal so.
If Not Intersect(Target, Range("A:F,H:AK")) Is Nothing Then
Gruß Tino

AW: VBA Zellenüberwachung + Schutz - UPDATE
17.05.2013 09:46:40
Tim
Super, hätte ich auch selber auf die Idee kommen können :-/
Weißt du auch zufällig wie man das einstellt, das bei Passworteingabe Sternchen kommen?

AW: VBA Zellenüberwachung + Schutz - UPDATE
17.05.2013 10:04:59
Tino
Hallo,
Du kannst es mit einer UserForm machen (so würde ich es machen) oder so.
kommt als Code in die Tabelle
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
  Const strPW As String = "test123" 
  If Not Intersect(Target, Range("A:F,H:AK")) Is Nothing Then 
    On Error GoTo ERREXIT 
    Application.EnableEvents = False 
    If Target.Count > 1 Then 
      If Target.Count = Columns.Count Then 
        'ganze Zeile 
        If Input_Box("Passwort") <> strPW Then 
          MsgBox "test" 
          Application.Undo 
        End If 
      Else 
        'mehrere Zellen ausgewählt 
        Application.Undo 
      End If 
    Else 
      If Target.Column = 1 Then 
        'Änderung in A 
        If Target <> "" Then 
          If Target < Date - 14 Then 
            If Input_Box("Passwort") <> strPW Then 
              MsgBox "test" 
              Application.Undo 
            End If 
          End If 
        End If 
      Else 
        'Änderung in B:AK 
        If Cells(Target.Row, 1) = "" Then 
          'A leer 
          Application.Undo 
        Else 
          If Cells(Target.Row, 1) < Date - 14 Or _
            Cells(Target.Row, 3) < Date - 14 And Cells(Target.Row, 3) <> "" Or _
              Cells(Target.Row, 4) < Date - 14 And Cells(Target.Row, 4) <> "" Then 
            If Input_Box("Passwort") <> strPW Then 
              MsgBox "test" 
              Application.Undo 
            End If 
          End If 
        End If 
      End If 
    End If 
  End If 
ERREXIT: 
  Application.EnableEvents = True 
End Sub 
 
 
 
kommt als Code in ein Modul
Option Explicit 
  
'Excel VBA ******************************************************* 
 
Private Declare Function FindWindow Lib "user32" Alias _
   "FindWindowA" (ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long 
  
Private Declare Function FindWindowEx Lib "user32" Alias _
  "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
   ByVal lpsz1 As String, ByVal lpsz2 As String) As Long 
     
Public Declare Function SetTimer& Lib "user32" _
  (ByVal hwnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal _
   lpTimerFunc&) 
  
Private Declare Function KillTimer& Lib "user32" _
  (ByVal hwnd&, ByVal nIDEvent&) 
  
Private Declare Function SendMessage Lib "user32" Alias _
    "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, lParam As Any) As Long 
  
Const EM_SETPASSWORDCHAR = &HCC 
Public Const NV_INPUTBOX As Long = &H5000& 
  
Public Sub TimerProc(ByVal hwnd&, ByVal uMsg&, _
                     ByVal idEvent&, ByVal dwTime&) 
  
Dim EditHwnd As Long 
  
  
EditHwnd = FindWindowEx(FindWindow("#32770", Application.Name), 0, "Edit", "") 
Call SendMessage(EditHwnd, EM_SETPASSWORDCHAR, Asc("*"), 0) 
KillTimer hwnd, idEvent 
End Sub 
 
Function Input_Box(strTitel$) 
SetTimer 0, NV_INPUTBOX, 10, AddressOf TimerProc 
Input_Box = InputBox(strTitel) 
End Function 
Gruß Tino

Anzeige
AW: VBA Zellenüberwachung + Schutz - UPDATE
17.05.2013 10:47:50
Tim
Habe ein weiteres Problem gefunden...
Ich kann in Excel keine Werte reinkopieren. Zum Beispiel Spalte O52-T52 aus einer anderen Exceltabelle, der löscht diese direkt wieder.
Kann man das iwie umgehen, dass das kopieren erlaubt wird, wenn man einen neuen Datensatz einträgt?

AW: VBA Zellenüberwachung + Schutz - UPDATE
17.05.2013 10:51:44
Tim
Also kurz gesagt:
Ich trage ein neuen Datensatz ein mit den 3 Datumsangaben danach will ich Werte aus einer anderen Tabelle reinkopieren, das geht nicht und löscht direkt wieder alles!
Dies muss allerdings möglich sein, gibt es dafür auch eine Lösung?
LG

besser beschreiben oder Rudi der dieses Prj. kennt
17.05.2013 11:01:19
Tino
Hallo,
dazu kenne ich Dein Projekt zu wenig und den Code den Du bekommen hast, habe ich nicht studiert.
Beschreibe mal Dein komplettes Vorhaben in der Tabelle!
Woran kann man erkennen ob es ein neuer Datensatz ist?
Beispieldatei ist sehr Hilfreich!
Evtl. kann Rudi Maintaire auch Helfen, der kenn dieses Projekt bereits.
Gruß Tino

Anzeige
AW: besser beschreiben oder Rudi der dieses Prj. kennt
17.05.2013 11:06:55
Tim
Also, ein neuer Datensatz ist wenn z.b. in Zeile 282 ein Eintrag ist und auch der letzte ist.
Wenn ich einen neuen Datensatz in Zeile 283 eintragen will, dann trage ich in A C und D die drei Datums ein. Danach wollte ich von Spalte L-AI Zahlen aus einer anderewn Tabelle reinkopieren, das funktioniert leider nicht, warum auch immer! Er löscht diese direkt wieder.
Der Sinn dieses Schutzes ist so gedacht:
- User will Wert in L 2 ändern
- Excel muss checken ob Datum in D 2 im 14 Tage Rahmen liegt
- Falls größer 14 Tage - änderung verhindern - Fehlermeldung : Bitte wenden sie sich an Ihren Administrator
- Der Bereich E 2- AK 2 müsste überwacht werden!
- User will neuen Eintrag hinzufügen
- Excel muss checken ob das eingegebene Datum in A&C&D im 14 Tage Rahmen liegt
- Falls Datum länger als 14 Tage zurück liegt - Fehlermeldung
Beispieldatei:
https://www.herber.de/bbs/user/85349.xls

Anzeige
AW: besser beschreiben oder Rudi der dieses Prj. kennt
17.05.2013 12:05:22
Tino
Hallo,
kannst mal versuchen ob es so geht.
Verstehe nur noch nicht wie die Änderung in Spalte A-D verhindert werden soll.
Evtl. könne man wenn in A, C u. D ein Datum steht diesen Bereich über den Tabellenschutz schützen,
da weis ich aber nicht ob es gewollt ist.
https://www.herber.de/bbs/user/85370.xls
Gruß Tino

AW: besser beschreiben oder Rudi der dieses Prj. kennt
17.05.2013 12:36:58
Tino
Hallo,
habe mal noch etwas eingebaut, vielleicht geht es so.
Bin jetzt nicht mehr online.
https://www.herber.de/bbs/user/85371.xls
Gruß Tino
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige