MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 07.09.2017, 09:08   #1
Wahlo
MOF Profi
MOF Profi
Standard VBA - Zeile sperren, wenn 2 bestimmte Felder gefüllt sind

Hallo zusammen,

wer kann mir helfen?
Ich habe ein geschütztes Tabellenblatt. In alle Spalten dürfen Einträge vorgenommen werden, nur in den letzten beiden R und S nicht. Hier dürfen nur bestimmte Personen Einträge vornehmen, die das Passwort herausnehmen.
Wenn in R und S ein Eintrag erfolgt ist, sollen auch die Zellen A bis Q selbiger Zeile gesperrt werden. (sobald der Blattschutz manuell wieder aktiviert wird).

Vorab recht herzlichen Dank und beste Grüße
Wahlo
Wahlo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 12:01   #2
Hans Hofmann
MOF Profi
MOF Profi
Standard

Hm,

das läuft auf VBA hinaus?
Mir würde eine Ereignisprozedur vorschweben, die Veränderungen der Spalte R/S überwacht und dann (ja wann genau?) das Zellschutz-Flag setzt oder aber wegnimmt.
Welcher Inhalt bedeutet Schreibschutz, welcher kein Schreibschutz?

__________________

Gruß HW

WebSite: Veröffentlichungen zu PP & VBA


Geändert von Hans Hofmann (07.09.2017 um 12:04 Uhr).
Hans Hofmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 12:25   #3
Wahlo
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Hans,

kein Schreibschutz in Zellen A-Q derselben Zeile, solange eine der beiden Zellen R/S leer ist und Schreibschutz, sobald R und S ungleich leer sind.

1000 Dank vorab.

Grüße
Wahlo
Wahlo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 12:57   #4
Hans Hofmann
MOF Profi
MOF Profi
Standard

Gehört ist Klassenmodul der Tabelle wo es tun soll (das ist im Projektexplorer da wo Microsoft Excel Objekte draufsteht):

Code:

Private Sub Worksheet_Change(ByVal Target As Range)

With Target
 If .Column = 18 Or .Column = 19 Then
    Range(Cells(.Row, 1), Cells(.Row, 17)).Locked = (Not IsEmpty(Cells(.Row, 18))) And (Not IsEmpty(Cells(.Row, 19)))
 End If
End With

End Sub
OR ist wahr wenn in einer oder beiden Spalten was steht
AND würde bedeuten, dass in beiden Spalten was stehen muss

__________________

Gruß HW

WebSite: Veröffentlichungen zu PP & VBA


Geändert von Hans Hofmann (07.09.2017 um 13:11 Uhr). Grund: AND/OR Eingefügt
Hans Hofmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 13:27   #5
Wahlo
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Hans,

erst einmal vielen Dank für deine Hilfe...

Ich habe mal eine Bsp-Datei angehängt, da ich nicht weiß, wo das Ganze eingefügt werden soll.

Könntest du mir bitte helfen?

Vielen Dank.

Grüße
Wahlo
Angehängte Dateien
Dateityp: xlsx r_s_Ereignis.xlsx (9,9 KB, 7x aufgerufen)
Wahlo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 16:42   #6
Hans Hofmann
MOF Profi
MOF Profi
Standard

Da nei
(ist das so gedacht, dass Spalte R UND Spalte S ausgefüllt werden müssen um..)
Angehängte Grafiken
Dateityp: jpg r_s_Ereignis.xlsx - [Tabelle1 (Code)]_2017-09-07_17-40-00.jpg (28,4 KB, 10x aufgerufen)

__________________

Gruß HW

WebSite: Veröffentlichungen zu PP & VBA

Hans Hofmann ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.09.2017, 16:57   #7
aloys78
MOF Meister
MOF Meister
Standard

Hallo Wahlo,

bezüglich aus- und einschalten des Password gäbe es auch eine andere Lösung.

Unter DieseArbeitsmappe folgenden Code einbauen:
Code:

Private Sub Workbook_Open()
    Worksheets("Tabelle1").Protect Password:="aloys", UserInterfaceOnly:=True   '<---- Password anpassen
End Sub
Die Berechtigung für Eingaben in Sp R und S könnte im VBA-Code über den Usernamen überprüft werden.

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.09.2017, 07:19   #8
Wahlo
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Hans,

genau DAS habe ich gesucht. Perfekt! Vielen Dank.

Hallo Aloys,
es ist so gedacht, dass in Spalten a-q jeder Einträge vornehmen kann und R und S als Freigabespalten fungieren. Wenn einmal freigegen, dann sollen die Inhalte a-q der Zeile nicht mehr einfach angepasst werden können.
In R und S dürfen verschiedene Personen freigeben.

Dann wird das zu komplex, oder? Wäre natürlich toll, wenn man verschiedene User per Makro zur Eingabe berechtigen könnte.

Grüße
Wahlo
Wahlo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.09.2017, 08:16   #9
aloys78
MOF Meister
MOF Meister
Standard

Hallo Wahlo,

Zitat:

In R und S dürfen verschiedene Personen freigeben.

Darum geht es im Folgenden !

Ausgangssituation:
- die beiden Spalten R und S sind grundsätzlich gesperrt,
- bestimmte Personen können mit Password den Schutz temporär aufheben, um in diese Spalten Daten einzugeben.

Alternative:
- diese beiden Spalten sind grundsätzlich gesperrt,
- bestimmte Personen sind zur Änderung berechtigt; sie sind dem Programm bekannt (entweder im Code oder in einer Extra-Tabelle (unsichtbar, gesperrt), die die Namen (Windows-User) der Berechtigten enthält)
- beim Öffnen der Datei werden für die Berechtigten Sp R und S automatisch freigeschaltet und beim Schließen der Datei wieder gesperrt

Programmieraufwand: gering

Aspekte:
regelmäßig Pswd für User erneuern und Pswd-Zuordnung managen versus
Liste der berechtigten Mitarbeiter verwalten

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.09.2017, 15:47   #10
Wahlo
Threadstarter Threadstarter
MOF Profi
MOF Profi
Standard

Hallo Aloys,

dies wäre natürlich die Königsdisziplin und würde viele Schritte des Schützens ersparen.

Wie würde dies aussehen, wenn bspw. der Nutzer "wahlo" Bearbeitungs-Berechtigungen hätte?

Vielen Dank vorab und ein schönes WE.

Grüße
Wahlo
Wahlo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.09.2017, 22:13   #11
aloys78
MOF Meister
MOF Meister
Standard

Hallo Wahlo,

Zitat:

Wie würde dies aussehen, wenn bspw. der Nutzer "wahlo" Bearbeitungs-Berechtigungen hätte?

Nachfolgend ein entsprechender Code, der unter DieseArbeitsmappe einzufügen ist. Testweise habe ich einen weiteren Usernamen eingefügt.

Beim Öffnen der Datei wird der Kennwortschutz der Tabelle aufgehoben, wenn ein berechtigter User tätig ist. Beim Schließen der Datei wird die Tabelle wieder geschützt.

Sinnvoll wäre es bei dieser Lösung, auch das VBA-Projekt zu schützen, so dass man nicht so ohne weiteres das Kennwort auslesen kann.

Code:

Option Explicit

Const sPSWD As String = "aloys"             '<--- Kennwort für Tabelle1


Private Sub Workbook_Open()
    Dim arrUser                                 ' Array Usernamen
    arrUser = Array("wahlo", "Bernd")       '<--- Usernamen aller Berechtigten
    Dim sUser As String                         ' angemeldeter Windows-User
    Dim swUser As Boolean                       ' Schalter User, True = Username in Liste
    Dim i As Long                               ' Schleifenzähler
    sUser = Environ("Username")                 ' Windows Username
    For i = LBound(arrUser) To UBound(arrUser)
        If sUser = arrUser(i) Then
            Worksheets("Tabelle1").Unprotect Password = sPSWD
            Exit For
        End If
    Next i
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Worksheets("Tabelle1").Protect Password = sPSWD
End Sub
Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:56 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.