Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1376to1380
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

Textfelder sperren für einige Zugriffe

Textfelder sperren für einige Zugriffe
26.08.2014 10:04:35
Mirko
Hallo zusammen,
ich habe mal wieder eine Frage:
1. ich habe eine Datei mit Textfeldern versehen die per Klick auf andere Tabellenblätter per Makro zugreifen.
2. Dort möchte ich gerne das nur bestimmte Leute auf bestimmte Textfelder zugreifen können. Ist dies möglich ohne ein riesen Hexenwerk daraus zu machen?
Die Datei erkennt bereits den User über die Anmeldung am Rechner. Kann man die ggf. nutzen?
Vielen Dank im voraus
VG Mirko

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textfelder sperren für einige Zugriffe
26.08.2014 10:16:30
Klaus
Hallo Mirko,
im Prinzip so:
Private Sub Workbook_Open()
Dim YouSeeMe As Boolean
Select Case Environ("Username")
Case "Hans.Wurst"
YouSeeMe = True
Case "Frank.Schmidt"
YouSeeMe = True
Case "Anna.Log"
YouSeeMe = True
Case Else
YouSeeMe = False
End Select
Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = YouSeeMe
End Sub
Grüße,
Klaus M.vdT.

AW: Textfelder sperren für einige Zugriffe
26.08.2014 10:32:29
Mirko
Hallo KLaus,
danke für die schnelle Rückmeldung
dies schreibe ich in "diese Arbeitsmappe" oder?
DANKE und Gruss Mirko

AW: Textfelder sperren für einige Zugriffe
26.08.2014 11:50:14
Klaus
Hallo Mirko,
wenn du das Makro inklusive "Workbook Open" verwenden willst, und es noch kein anderes Makro "Workbook Open" bei dir gibt, dann lautet die Antwort ja.
Sinnigerweise bringst du den Code dort unter, wo er gebraucht wird. Ich fände es am einfachsten, beim Mappenstart zu prüfen wer an der Mappe dran ist, darum mein Beispiel. Da ich deine Datei und deine Makros nicht kenne, kann ich nur generelle Tipps geben. Dass du die Tabellen und TextBoxen, und natürlich die Usernamen, noch ändern musst ist klar, oder?
Grüße,
Klaus M.vdT.

Anzeige
AW: Textfelder sperren für einige Zugriffe
27.08.2014 13:14:58
Mirko
Hallo Klaus,
danke für die Antwort:
Sinnigerweise bringst du den Code dort unter, wo er gebraucht wird. -- "OK verstanden"
Ich fände es am einfachsten, beim Mappenstart zu prüfen wer an der Mappe dran ist, darum mein Beispiel. -- "Dies habe ich bereits als Code -- heisst es wird schon geprüft wer die Mappe öffnet und dann wird von demjenigen immer die Signatur mit angefügt - beim Kopieren und einfügen"
Da ich deine Datei und deine Makros nicht kenne, kann ich nur generelle Tipps geben. -- "ich hänge dir mal ein Beispiel mit an.."
https://www.herber.de/bbs/user/92318.xlsm
Dass du die Tabellen und TextBoxen, und natürlich die Usernamen, noch ändern musst ist klar, oder? - "ist auch klar"
Nun habe ich noch eine Frage: - wie in meinem Beispiel zu finden darf nur ein bestimmter Personenkreis drück 1 klicken können, aber alle dürfen Drück 2 und 3 klicken.
Ich hoffe du kannst mir helfen..
VG Mirko

Anzeige
AW: Textfelder sperren für einige Zugriffe
27.08.2014 13:25:02
Klaus
Hallo Mirko,
einfach in deinen Code eingebaut, so:
folgt der gleichen Logik wie die anderen sperren - es wird erst alles erlaubt, und dann wieder verboten falls der User nicht "soundso" heisst.
Private Sub Workbook_Open()
Tabelle6.Cells(2, 1).Value = Environ("username")
Worksheets("Tabelle6").Range("R1").Value = Environ("username")
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHorizontalScrollBar = True
Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = True
If Worksheets("Tabelle6").Range("R1").Value  "pfoh02" _
And Worksheets("Tabelle6").Range("R1").Value  "musik01" _
And Worksheets("Tabelle6").Range("R1").Value  "jendr02" _
And Worksheets("Tabelle6").Range("R1").Value  "Pfoh.M" _
And Worksheets("Tabelle6").Range("R1").Value  "" Then
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHorizontalScrollBar = False
Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = False
End If
End Sub
Übrigens: Die Datei hatte mich zunächst ausgesperrt, da ich natürlich nicht in der User-Liste stand. Ich habe etwa 17 Sekunden gebraucht um das zu "hacken" (mit Absicht in Anführungsstrichen). Nur damit du dir klar bist wie sicher eine solche Schutzmaßnahme ist: nicht sehr.
Oh eine Kleinigkeit noch: füge auch dieses Makro ein.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHorizontalScrollBar = False
Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = False
End Sub

Dadurch verhinderst du, dass dein Schutz ganz simpel durch "ohne Makros starten" umgangen wird. Macht das ganze einen mü sicherer :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: Textfelder sperren für einige Zugriffe
27.08.2014 14:02:26
Mirko
Hallo Klaus,
danke für die sehr schnelle Hilfe -- aber irgendwie komme ich nicht ganz weiter.
- Muss ich dies "TextBox 1" umbenennen? in "Drück 1"? er bringt mir imer folgende Zeiole als Fehler:
...Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = False...
Die Buttons sind ja nur Textfelder mit zugewiesenen Makros liegt die vielleicht daran?
VG Mirko

AW: Textfelder sperren für einige Zugriffe
27.08.2014 15:39:07
Klaus
Hallo Mirko,
bei mir hat es in der Musterdatei funktioniert! "Drück 1" ist doch nur der Text der oben drauf steht, du musst natürlich in den NAMEN des Feldes umbenennen. Diesen findest du am einfachsten heraus, indem du den Makrorekorder startest und dann irgendwas mit "Drück 1" anstellst (ich habe es einfach etwas in der Gegend herum bewegt):
Sub Makro1()
' Makro1 Makro
ActiveSheet.Shapes.Range(Array("TextBox 1")).Select
Selection.ShapeRange.IncrementLeft 29.25
Selection.ShapeRange.IncrementTop 25.5
End Sub

In deiner Musterdatei heisst es "TextBox 1", demnach
Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = False
Wenn das Ding in deiner Musterdatei aus irgendeinem Grund "IchMagKatzen" heisst statt "TextBox 1", dann ist der Code natürlich
Sheets("Tabelle1").Shapes.Range(Array("IchMagKatzen")).Visible = False
ausserdem, auch daran könnte es liegen, musst du dich natürlich auf Tabelle1 beziehen - so heisst der Reiter in deiner Musterdatei! Wenn der erste Reiter in deinem Master in Wahrheit "Navigation" heisst, dann muss der Code natürlich so aussehen:
Sheets("Navigation").Shapes.Range(Array("IchMagKatzen")).Visible = False
bzw. Sheets("Navigation").Shapes.Range(Array("TextBox 1")).Visible = False

Generell gilt hier wieder: Wenn dein Muster und dein Master unterschiedlich sind, bist du selber schuld dass es nicht sofort die richtige Lösung gibt :-)
Grüße,
Klaus M.vdT.

Anzeige
AW: Textfelder sperren für einige Zugriffe
28.08.2014 08:43:25
Mirko
Guten Morgen Klaus,
erst mal vielen dank für deine Geduld..
ich habe dies so gemacht wie du beschrieben hast, aber...
bei mir funktioniert dies nicht.
Ich habe den Code "in diese Arbeitsmappe" eingetragen.
Ich bin immer noch in der Test Datei... :(
Aber ich bekomme immer eine Laufteitfehler wo die fett gedruckte Zeile gelb ist:
ActiveWindow.DisplayWorkbookTabs = True
ActiveWindow.DisplayHorizontalScrollBar = True
Sheets("Tabelle1").Shapes.Range(Array("TextBox 1")).Visible = True
beim speichern ist dies diese hier:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWindow.DisplayWorkbookTabs = False
ActiveWindow.DisplayHorizontalScrollBar = False
Sheets("Tabelle1").Shapes.Range(Array("Textbox 1")).Visible = False
End Sub
DANKE und VG Mirko

Anzeige
Version?
28.08.2014 10:15:23
Klaus
Hallo Mirko,
nochmal - bei mir in der Testdatei funktioniert es.
Bleiben 2 Möglichkeiten:
1) du hast einen Fehler eingebaut, Sheetname oder so. Unwahrscheinlich da du auch in der Musterdatei getestest hast, hoffe ich.
2) ein Versionsproblem. Ich sehe du hast xl2007, ich nutze xl2010. Das dürfte eigentlich kein Problem sein, aber dafür lege ich die Hand nicht ins Feuer ... hast du die Möglichkeit, mal auf 2010 zu testen? Ich komme leider nicht an eine 2007er Version.
mfg,
Klaus

AW: Version?
28.08.2014 10:26:34
Mirko
Hallo Klaus,
1. ja bin auch in der Musterdatei --
2. nein habe hier keinen der 2010 nutzt :(
ich probiere noch ein bischen -- muss doch irgendwie klappen..
Melde mich dann noch mal..
VG Mirko

Anzeige
AW: Version?
28.08.2014 11:47:27
Mirko
Hallo Klaus,
ich glaube den Fehler gefunden zu haben.
Bei mir heißt dies "Textfeld" und dann ist das Textfeld ausgeblendet korrekt?
VG Mirko

AW: Version?
28.08.2014 12:14:47
Mirko
Hallo Klaus,
in meiner Masterdatei habe ich ziemlich viele Tabellen Blätter mit vielen Textfeldern daher bekomme ich jetzt dadurch ein paar Schwierigkeiten. Gibt es eine Möglichkeit dies Textfeld nicht unbedingt auszublenden sondern nur das Makro ausschalten damit die Verlinkung zu den anderen Tabellen Blättern nicht funktioniert.
VG Mirko

AW: Version?
01.09.2014 08:55:35
Klaus
Hallo Mirko,
ich wundere mich eh, warum du Textfelder benutzt. Für deine Zwecke wären Buttons doch viel sinnvoller.
Bei einem Button kannst du, statt ".visible", die ".enabled" Eigenschaft verändern. Bei ".enabled = false" wird der Button so grau dargestellt wie du es aus den Windowsmenüs kennst und unclickbar.
Aber du hast, statt Buttons, ja Textfelder. Da würde ich einfach ein wenig schummeln. Lass das Workbook_Open Makro in einen ausgebendete Reiter in eine freie Zelle das Wort "Ja" schreiben, wenn der richtige Anmeldename benutzt wurde - ansonsten das Wort "nein". Sagen wir mal, in Tabelle6-A1.
Deine Makros schreibst du jetzt alle so um:
Sub DeinMarkro()
If Sheets("Tabelle6").Range("A1").value = "nein" then
Msgbox ("Keine Berechtigung!")
else
[... dein restlicher Makrocode ...]
end if
End Sub

(beachte, dass das gesamte Makro in den else-endif Block kommt!
Kannst dir jetzt aussuchen, welchen Weg du gehst. Der Weg mit den Buttons ist auf jedem Fall eleganter und Enduser-Freundlicher, ich befürchte aber etwas über deinem VBA-Level?
Grüße,
Klaus M.vdT.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige