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

Einzelne Zellen mit Pin versehen (VBA)


Betrifft: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 26.01.2018 12:42:38

Hallo zusammen

Mein Name ist Marco, ich bin neu hier und benötige auf Grund eigener bescheidener VBA-Kenntnisse dringend Hilfe.

Ich versuche eine Datei zu bauen, auf der erstmal viele Leute Zugriff haben. Diese Datei würde sich auf einem einzigen Rechner befinden. Es geht letztendlich um eine Art Umfrage. Ich bitte darum, denn Sinn erstmal nicht weiter zu hinterfragen. Es geht nur mit Excel und auch nur auf den von mir gleich noch geschildertem Weg.

Das VBA soll jetzt folgendes tun: Es soll, wenn jemand in einer Zelle etwas ändern möchte (Bsp.: H5), in die Zelle B5 gucken und dort den Namen auslesen, dann am besten auf ein anderes verstecktes und gesichertes Blatt nach diesen Namen suchen und nachsehen, welcher Pin dort hinterlegt ist, dann sollte die Abfrage nach dem Pin erfolgen und bei korrekter Eingabe des Pins, sollte die Zelle zur Bearbeitung frei gegeben werden. Nach der Eingabe sollte die Zelle unwiederruflich gesperrt sein.

Also nehmen wir mal an, in der Zelle B5 steht der Name Müller, dann soll auch nur Müller die Zellen daneben benutzen dürfen (nach PIN)
Steht in der Zelle B5 irgendwann Schmidt und in der Zelle B6 Müller, gehören die Zellen in Zeile 5 Schmidt und die Zeile 6 Müller.

Hoffentlich wisst ihr, wie ich es meine.

Ich habe mir schon die Finger wund gegoogelt, aber leider nichts passendes gefunden. Wäre toll, wenn hier jemand eine Lösung wüsste.

Gruß
Marco

  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: onur
Geschrieben am: 26.01.2018 12:45:43

"Steht in der Zelle B5 irgendwann Schmidt und in der Zelle B6 Müller, gehören die Zellen in Zeile 5 Schmidt und die Zeile 6 Müller" - soll das heissen, die Positionen der Zeilen ändern sich evtl auch noch, nachdem die Eingaben erfolgt sind?


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 26.01.2018 13:18:37

Hallo und erstmal danke für die Nachfrage.

Der Name der vorn steht, konnte sich ändern, der ist dynamisch. Folglich müsste die Passwortabfrage dynamisch sein. Also die Abfrage müsste dann ähnlich eines SVERWEIS sein.

Also die Zelle B5 bis sagen wir mal B40 wird aus einer Liste befüllt und in dieser Liste könnte sich die Reihenfolge der Personen ändern.

Ist etwas kompliziert, aber ich hoffe es ist verständlich, wie ich es meine.


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 26.01.2018 13:50:10

Leider habe ich die Edit-Funktion nicht gefunden, von daher einfach mal als neues Posting:

Was auch denkbar wäre: Zelle B5 der Name, Zelle C5 gesperrt und ausgeblendet das Kennwort.
Jetzt müsste, wenn man Zelle D5 befüllen möchte die MsgBox kommen und nach dem Kennwort fragen. Stimmt es, darf die Zelle verwendet werden, falls nicht, nicht. Bei Zelle E5 von auch wieder. Usw. Vielleicht wäre das ein einfacherer Ansatz.


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 26.01.2018 13:53:42

Und dann auch noch den Thread als erledigt markiert. Tut mir Leid.


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Werner
Geschrieben am: 27.01.2018 08:29:22

Hallo Marco,

wenn du die Passwortabfrage und die Datenerfassung auf einem Tabellenblatt erledigst, dann kann ja jeder die Daten einsehen, die durch andere Nutzer bereits erfasst wurden. Das kann ja auch nicht im Sinne des Erfinders sein?

Ich würde da einen anderen Ansatz benutzen. Blatt mit den Nutzernamen und den entsprechenden Passwörtern/Pin, Tabellenblatt "Passwörter" auf einem versteckten Tabellenblatt.
Erfasste Daten auf einem versteckten Tabellenblatt "Daten".
Ein für alle sichtbares Blatt für die Passwortabfrage und die Erfassung der Daten, Tabellenblatt "Datenerfassung".
Die erfassten Daten werden ins versteckte Tabellenblatt "Daten" kopiert. Danach werden die erfassten Daten im Tabellenblatt "Datenerfassung" wieder gelöscht, somit hat der nächste Nutzer ein leeres Tabellenblatt für seine Datenerfassung.

Dann wäre noch die Frage, um was es sich bei deiner PIN handeln würde, einen Text oder eine Zahl?

Gruß Werner


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 27.01.2018 10:36:14

Hallo Werner,

Vielen Dank für den neuen Ansatz, allerdings sind die Daten nicht sooo geheim, sie sollten allerdings nur von der jeweiligen Person eingetragen werden dürfen.

Das Problem ist, dass ich für jeden Tag ein Blatt habe, dass sind dann im schlimmsten Fall 31 zusätzlich versteckte Blätter.

Allerdings muss ich sagen, dass ich für jede Hilfe dankbar bin, also würde ich auch den anderen Ansatz durchaus umsetzen wollen. Ich sage mal so: Wie es für dich/ euch am einfachsten umsetzbar ist.

Ich kann leider keine Beispieldatei hochladen, da ich gerade vom Handy schreibe, aber die Tabelle selbst ist wirklich einfach gehalten.

Beispiel:
B5 der Name (dynamisch, kann aber auch fest sein)
C5 (das Passwort, versteckt und geschützt, dynamisch zum Namen)
D5 (Drop-Down-Liste, soll nach pin einmal nutzbar sein, danach gesperrt)
E5 (wie D5)
F5 (Eingabe von Hand, auch nur einmal nutzbar)
G5 (wird mit Klick eines Buttons befüllt, hier wird dadurch die Systemzeit eingetragen)
Geht noch weiter, aber das würde ich dann hoffentlich hinbekommen.

PIN: würde ich einen Zahlencode bevorzugen. Ich dachte an 4 bis 6 Stellen. Da er bei jeder Zelle genutzt werden muss, sollte es noch "händelbar" bleiben. Also die Abfrage sollte, da die Zellen nicht gleich hintereinander gefüllt werden, bei jeder Eingabe erfolgen.

Wichtig ist, die Zelle darf nicht gesperrt werden, wenn ein falscher PIN verwendet wurde. Gut wäre, wenn die Abfrage beim Anklicken oder beim Versuch sie zu befüllen kommen würde. Ist der PIN falsch, sollte auf eine neutrale Zelle gesprungen werden, vielleicht A1.

Wie gesagt, der Aufbau der Tabelle ist nicht kompliziert, aber da diese Abfrage drüber packen, bringt mich zum Verzweifeln.

Gruß Marco


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Werner
Geschrieben am: 27.01.2018 11:27:13

Hallo Marc,

ich hab da schon mal was zusammengebastelt, kann aber im Moment nichts hochladen, erst morgen (aber erst ab nachmittags) wieder.

Nach deinen jetzigen Angaben müsste ich das noch ein wenig anpassen, sollte aber kein Problem sein.

Ich würde aber nicht verschiedene Tabellenblätter pro Tag anlegen sondern nur eines. Das ist wesentlich einfacher für spätere Auswertungen.

Gruß Werner


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 27.01.2018 15:52:09

Hallo Werner,

Das klingt doch schon sehr gut. Ich kann bis morgen warten, nur kein Stress. Bin schon froh, wenn mir jemand helfen kann.

Ich stelle es mir in etwa so vor, vielleicht siehst du es ja ähnlich.

Wenn jemand in Zelle D5 klickt dann Abfrage nach PIN, stimmt der PIN (Zelle C5), wird Zelle D5 zum schreiben frei gegeben, sonst spring auf A1.
Wenn dann Zelle D5 gefüllt ist, dann diese dauerhaft sperren.
Das muss dann für jede Zeile gemacht werden, aber das wäre es mir wert.

Das sperren habe ich schon hinbekommen, mir fehlt die blöde PIN-Abfrage.


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Werner
Geschrieben am: 28.01.2018 15:52:37

Hallo Marco,

schau dir mal die Beispielmappe an, ob das in die Richtung was für dich wäre.

https://www.herber.de/bbs/user/119341.xlsm

Gruß Werner


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Marco
Geschrieben am: 28.01.2018 19:44:55

Hallo Werner,

vielen Dank für deine Mühe, aber leider geht es nicht ganz in die Richtung, in der ich es haben wollen würde.

Wie so oft, muss man vom schlimmsten Mitarbeiter ausgehen und das würde hier in die Hose gehen.

Am einfachsten für mich wäre, wenn du es so erstellen könntest, wie ich es eingangs versucht habe, zu schildern.

Die Tabelle an sich ist sehr simpel aufgebaut und das hat leider seinen Grund ;-)

Es muss so sein, dass jeder Nutzer jede Zelle nur einmal benutzen kann, aber dennoch nicht alle gleich sofort geschlossen befüllen muss. Das geht leider nicht.

Genaueres kann ich dir vielleicht per Mail mitteilen, aber leider nicht öffentlich.


Es müsste wie folgt sein.

Spalte B sind die Namen (noch dynamisch)
Spalte C die Passwörter (noch dynamisch)
Spalte D ein Drop-Down-Feld (in jeder Zelle)
Spalte E ein Drop-Down-Feld (in jeder Zelle)
Spalte F Drop-Down-Feld (in jeder Zelle)
Spalte G (von Hand befüllt, muss ungesperrt bleiben) (in jeder Zelle)
Spalte H wird durch Makro befüllt (in jeder Zelle)

Jetzt müsste es so sein:
Klickt jemand in Zelle D5 (gehört Mitarbeiter 1), muss das PW abgefragt werden, stimmt es, darf die Zelle befüllt werden, danach muss sie gesperrt sein. Stimmt das Passwort nicht (PIN), muss in Zelle A1 gesprungen werden, Zelle D5 muss weiter offen bleiben.

Ich kann davon leider nicht abweichen.

Es müsste dann in etwa so aussehen:
Wenn aktive Zelle ist D5, msgbox mit PIN abfrage, stimmt pin mit pin in zelle c5 überein, darf geschrieben werden, wenn nicht, spring in zelle a1.

Dass das dann wahrscheinlich für jede Zeile gemacht werden müsste, muss ich leider in Kauf nehmen und würde ich natürlich selbst probieren... Allerdings fehlt mir dafür der Start :-(

Nochmals: Es tut mir Leid, aber so würde das bei uns im Betrieb nicht funktionieren.

Gruß
Marco


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: onur
Geschrieben am: 28.01.2018 21:02:53

Teste das mal:
https://www.herber.de/bbs/user/119347.xlsm


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Peter Kloßek
Geschrieben am: 30.01.2018 17:25:53

Hallo onur,

eine interessante Lösung. Sie hat nur einen Nachteil: Wenn der Benutzer die Makros nicht freigibt kann er alles überall abändern. Schaltet man frei, kann man dafür außerhalb der Benutzer-Tabelle nichts mehr eingeben.

M.f.G. Peter Kloßek


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: onur
Geschrieben am: 30.01.2018 17:38:36

Das erstere kann man verhindern, indem die datei passwortgeschützt wäre und nur durch ein makro in Workbook_Open automatisch freigegeben werden würde.
Das zweite ist nur eine Kleinigkeit, man muss nur "Cells(1,1).select" vor "exit sub" entfernen.


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Peter Kloßek
Geschrieben am: 29.01.2018 01:17:38

Hallo Marco,

ich habe mal eine Lösung erarbeitet. Die Teilnehmer können jeweils nach Eingabe ihrer PIN in 3 Spalten Werte oder Texte per Drop-Down und in einer weiteren Spalte Werte oder Texte freihändig eingeben. Eine weitere (5.) Spalte wird von der administrativen Seite befüllt und kann nicht geändert werden.

Die gültigen PIN-Nummern sind in der Tabelle 2 festgelegt. Eine Änderung ist nur von der Administration möglich. Außerdem ist hier die Liste der möglichen Eingaben (für die ersten 3 Eingabespalten) untergebracht. Diese Liste gilt für alle per Drop-Down auszufüllenden Zellen. Denkbar wäre aber auch eine Differenzierung nach den verschiedenen Personen. Dann müssten entsprechende Listen pro Person geführt werden.

Der Benutzer - wobei gleichzeitig immer nur einer auf die Datei zugreifen kann - gibt seine gültige PIN-Nummer ein und betätigt dann die Eingabetaste. Der Cursor steht nun unterhalb der PIN-Eingabe. Dann betätigt er den Button "Eingaben freischalten". Er kann jetzt in der entsprechenden Zeile nur diejenigen Zellen auswählen, die noch nicht belegt sind. Nach der Eingabe betätigt er den Button "Eingaben beenden". Jetzt sind sämtliche Zellen geschützt. Erst durch erneute PIN-Eingabe können weitere bisher leere Zellen beschrieben werden. Während der Eingabephase können nur die benutzereigenen Zellen beschrieben werden, in die Zellen der anderen Nutzer kommt er nicht.

Ich habe mal 2 Versionen erstellt. Die erste (offene) Version ist zu Deiner Ansicht bestimmt:

https://www.herber.de/bbs/user/119348.xlsm

Die zweite Datei ist die Ausführung für die eigentliche Bearbeitung durch die betroffenen Personen.

https://www.herber.de/bbs/user/119349.xlsm

In dieser Datei ist sowohl die Tabelle 1 als auch die Arbeitsmappe geschützt. Da die Schutz-Passwörter in den Makros vorhanden sind, sind auch diese durch Passwort ausgeblendet.

Es sind die folgenden Passwörter vergeben worden:

. für den Blattschutz (Tabelle 1) = "Kennw1"
. für den Arbeitsmappenschutz = "Kennw2" und
. für den Makro-Sichtschutz = "Kennw3"

Wenn Du die Kennwörter ändern möchtest, musst Du das in den Makros tun. Am einfachsten geht dies mit "Suchen und Ersetzen".

Bitte mal ausprobieren; Rückmeldung wäre schön.

Mit freundlichem Gruß
Peter Kloßek


  

Betrifft: AW: Einzelne Zellen mit Pin versehen (VBA) von: Daniel
Geschrieben am: 30.01.2018 18:11:41

HI

mal mein Lösungsvorschlag:

1. lege ein Blatt "PIN_Liste" an.
in diesem Blatt müssen in Spalte A die Namen und in Spalte B daneben die PIN stehen
(Überschriften und Leerzeilen sind erlaubt)

2. Füge dann den Code ins Modul des Arbeitsblattes ein, für den das ganze gelten soll

3. aktiviere dann den Blattschutz für dieses Blatt. Das Passwort musst du in der Variable PW im Code ablegen.

wenn der Anwender eine Zelle bearbeiten will, muss er diese Doppelt klicken.
Dann wird er zuerst nach der PIN gefragt und dann nach dem Wert, der in die Zelle soll.
Der Code merkt sich die eingegebene PIN, dh bearbeitet der Anwender eine Zelle mit gleichem Namen in Spalte B, muss er die PIN nicht nochmal eingeben.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Const PW = "DeinPasswort"

Static PINist As String
Dim Zelle As Range
Dim PINsoll As String
Dim Nme As String
Dim Eingabe As String
Cancel = True

Nme = Target.Offset(0, 2 - Target.Column).Value
Set Zelle = Sheets("PIN_Liste").Columns(1).Find(what:=Nme, lookat:=xlWhole)

If Zelle Is Nothing Then
    MsgBox "Für diesen Namen ist noch keine PIN hinterlegt." & vblf & _
           "Bitte wenden sie sich an den Administrator."
Else
    PINsoll = Zelle.Offset(0, 1).Value
    If PINist = "" Or PINsoll <> PINist Then PINist = InputBox("Bitte PIN eingeben")
    If PINist = PINsoll Then
        Eingabe = InputBox("Bitte Daten eingeben", , Target.Value)
        If StrPtr(Eingabe) <> 0 Then
            Me.Unprotect PW
            Target.Value = Eingabe
            Me.Protect PW
        End If
    Else
        MsgBox "PIN falsch"
        PINist = ""
    End If
End If

End Sub
Das Blatt PIN-Liste solltest du ausblenden und dann in der Arbeitsmappe die Struktur mit Passwort schützen. Dann kann nur derjenige, der dieses Passwort hat, die Pinliste einblenden und bearbeiten.

sollte es Zellen geben, die jeder ohne PIN-Eingabe bearbeiten darf, nimmst du vor aktivieren des Blattschutzes das Häkchen bei "Gesperrt" in den Zelleigenschaften raus.



Gruß Daniel


Beiträge aus dem Excel-Forum zum Thema "Einzelne Zellen mit Pin versehen (VBA)"