Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
968to972
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
968to972
968to972
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelle leer lassen (unique Key)

Zelle leer lassen (unique Key)
17.04.2008 09:35:00
Stevo
Hallo
Wäre super wenn jemand mir helfen könnte.
Folgendes Problem:
In Spalte A gibt es für jede Zeile einen "Unique Key".
Eine Spalte "M" (Excel-Tabelle) sollte nur von einer Person Y gepflegt werden können. Alles andere dürfen die anderen Nutzer der Tabelle durchführen. Es sollte z.B. möglich sein, eine Zeile zu kopieren, nur müsste dann der Wert in der Spalte "M" leer bleiben, auch wenn die kopierte Zeile dort einen Wert hatte.
Mit der Zell protection funktioniert das nicht so richtig.
Die Person Y welche für Spalte "M" verantwortlich ist, sollte also wissen, wo noch Entscheidungen zu treffen sind und wo nicht. Es ist aber nicht so, dass Spalte "M" irgendwie geheim ist.
Alle Werte in Spalte "M" welche von Person Y eingegeben wurden, müssen aber erhalten bleiben. Nur wenn andere Nutzer einen neuen Key generieren, sollte der Wert in Spalte "M" leer sein.
Das Excel Sheet ist relativ gross und deshalb werden die Zeilen kopiert, da sich viele Werte jeweils nicht ändern.
Geht das mit VBA:
Kann man die Zelle irgendwie flaggen, welche von Person Y eingegeben wurden.
Vielleicht, dass irgendwo getracked wird, zu welchen "unique Keys" Person Y bereits Spalte "M" ausgefüllt hatte.
Es werden aber nicht nur neue Zeilen ganz unten beigefügt, sondern aber auch zwischen drin im sheet.
Für Hilfe wäre ich super dankbar.
Tolles Forum
Gruss
Stevo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle leer lassen (unique Key)
17.04.2008 10:36:48
Matthias
Hallo Stevo,
ich hab das nicht ganz verstanden.
Die Anwender dürfen also Zeilen kopieren.
Sobald die aber "einen neuen Key generieren"... - heißt das, sie geben in Spalte A manuell einen anderen Wert ein? - soll der Wert in Spalte M gelöscht werden?
Und ansonsten darf die Spalte M vom Anwender (außer Person Y) nicht bearbeitet werden?
Gruß Matthias

AW: Zelle leer lassen (unique Key)
17.04.2008 12:43:00
Stevo
Hallo Matthias
Ganz genau...
In der Regel kopieren die User einfach irgendwo eine Zeile, ändern dann den Key manuell und ein paar andere Werte in der Zeile...
Oder Sie kopieren nicht und kreieren ganz eine neue Zeile selber...
Die Spalte "M" sollte dann einfach jeweils wieder leer sein.
Bei den Keys wo Person Y aber etwas in Spalte "M" eingetragen hat, sollte das nicht gelöscht werden, sondern der Wert sollte bestehen bleiben. Diese Person Y sollte auch die Spalte "M" updaten können.
Irgendwie muss wahrscheinlich in einem Hilfssheet getracked werden, welche Keys (mit Wert in Spalte "M") Person Y bereits bearbeitet hat... z.B. in dem Person Y vielleicht irgendwo in einer Zelle ein X setzt, so dass VBA erkennt, dass Person Y jetzt das Sheet updatet.
Für mich scheint das irgendwie super komplex.
Wäre super wenn dir dazu etwas einfällt.
Beste Grüsse
Reto

Anzeige
AW: Zelle leer lassen (unique Key)
17.04.2008 13:33:00
fcs
Hallo Reto,
nach etwas Tüftelei scheinen meine Prozeduren jetzt zu funktionieren.
Die Spalte M kann nur von den berechtigten Usern selektiert und somit geändert werden.
Zusätzlich musste ich noch prüfen lassen ob Zellen der Spalte M unzulässiger Weise mit selektiert sind, um sie gegen "versehentliches" Löschen zu schützen.
Beim kopieren von Zeilen oder Änderungen in Spalte A wird in Spalte M der Eintrag gelöscht.
Löschen von Zeilen funktioniert auch.
Das ganze funktioniert ohne Blattschutz. Der gesamte Code muss im VBA-Editor unter dem Tabellen-Blatt eingefügt werden. Je nachdem wie viele Tüftler unter den Anwendern der Datei sind muss du das VBA-Projekt per Kennwort schützen.
Gruß
Franz

Private lngRows As Long 'Merker für benutzte Zeilen im Tabellenblatt
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
If Me.UsedRange.Rows.Count >= lngRows Then
For Each Zelle In Target
Select Case Zelle.Column
Case 1 'Spalte A
'Bei Änderung in Spalte A wird Inhalt in Spalte M gelöscht
Application.EnableEvents = False
Cells(Zelle.Row, 13).ClearContents
Application.EnableEvents = True
Case Else
'do nothing
End Select
Next
Else
'do nothing, Zeile(n) wurde(n) gelöscht
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
lngRows = Me.UsedRange.Rows.Count 'Anzahl benutzer Zeilen merken
'Prüfung wenn Bereich über mehrere Spalten selektiert ist, _
aber nicht ganze Zeilen, oder Spalte M selektiert ist.
If (Selection.Columns.Count  1) _
Or Selection.Address = Columns(13).Address Then '
'Zellen über mehrere Spalten sind selektiert
'Prüfen ob Spalte M in Selektion
If Selection.Column = 13 Then
MsgBox "Spalte M darf nicht im selektierten Bereich erfasst sein!"
ActiveCell.Select
End If
Else
If Target.Row > 1 Then 'bei mehr Titelzeilen anpassen.
'Spalte M darf nur von berechtigten Usern selektiert werden
Select Case Target.Column
Case 13 'Spalte M
Select Case VBA.Environ("username")
Case Is = "S014123", "PersonY" 'berechtigte User
'do nothing
Case Else
Application.EnableEvents = False
Target.Range("A1").Offset(0, -1).Select 'linke Nachbar-Zelle wählen
Application.EnableEvents = True
MsgBox "Sie dürfen in Spalte M nicht ändern!"
End Select
Case Else
'do nothing
End Select
End If
End If
End Sub


Anzeige
AW: Zelle leer lassen (unique Key)
17.04.2008 14:09:00
Stevo
Super
Danke Franz
werde ich jetzt gleich testen

AW: Vielen Dank AAA+++
17.04.2008 15:04:13
Stevo
Hey Frank
Das ist Spitze...
Deine Idee kann ich auch super auch für andere Sheets verwenden...
Besten DANK

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige