Anzeige
Archiv - Navigation
468to472
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
468to472
468to472
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Benutzerabhängig Tabellen einblenden

Benutzerabhängig Tabellen einblenden
12.08.2004 09:48:18
Torsten
Hallo zusammen,
mit folgendem Code möchte ich bestimmte WS nur einblenden lassen, wenn ich der User bin (GWS-TKR):
Dim ws
Dim Arr As Integer
Arr = Array("SETT", "PROTOC", "RE18VJ", "RE912VJ", "RE18LJ", "BU12LJ", "Accounts")
If Application.UserName "GWS-TKR" Then
For Each ws In Arr
Worksheets(ws).Visible = xlVeryHidden
Else
Worksheets(ws).Visible = True
End If
Leider erhalte ich folgende Fehlermeldung:
"For Each kann nur zum Durchlauf einer Auflistung (...) verwendet werden".
Was mache ich falsch?
Vielen Dank für Eure Tips.
Gruß
Torsten
AW: Benutzerabhängig Tabellen einblenden
Dr.
Mach´s doch so:
Dim ws
Dim Arr As Integer
If Application.UserName "GWS-TKR" Then
For i=1 to Sheets.Count
Worksheets(i).Visible = xlVeryHidden
Else
Worksheets(i).Visible = True
Next i
AW: Benutzerabhängig Tabellen einblenden
sergiesam
Guter Tipp aber er will nicht alle ausblenden sondern nur bestimmte Blätter... (siehe mein Beitrag).
Sam
AW: Benutzerabhängig Tabellen einblenden
Dr.
Stimmt. Erst lesen, dann schreiben. ;-)
AW: Benutzerabhängig Tabellen einblenden
sergiesam
Hi,
mit for each kann man nur Objekte durchlaufen. ein Array ist kein objekt.
Du kannst z.B. ein Collection-Objekt verwenden.

Sub test()
Dim wsCollection As Collection
Set wsCollection = New Collection
wsCollection.Add Worksheets("SETT")
wsCollection.Add Worksheets("PROTOC")
wsCollection.Add Worksheets("RE18VJ")
Dim ws As Worksheet
For Each ws In wsCollection
If Application.UserName <> "GWS-TKR" Then
ws.Visible = xlSheetVeryHidden
Else
ws.Visible = xlSheetVisible
End If
Next ws
End Sub

Gruß,
Sam
Anzeige
AW: Benutzerabhängig Tabellen einblenden
IngoG
Hallo sam,
versuchs doch mal mit:
for each ws in worksheets(arr)
Gruß Ingo
AW: Benutzerabhängig Tabellen einblenden
sergiesam
Hi,
stimmt, schön das es sooooo viele wege gibt...
Sam
AW: Benutzerabhängig Tabellen einblenden
Torsten
Hallo Ingo,
ich habe Deinen Vorschlag auch aufgegriffen, erhalte aber im Gegensatz zu Sam's Version eine Fehlermeldung "Else ohne If". Versteh' ich nicht. Kannst Du Dir das nochmal anschauen bitte? (Sam's Vorschlag läuft durch - Eine Lösung hätte ich also zu meinem Problem. Ich würd' halt nur gerne wissen, warum's der eine Code tut und der andere nicht)
' Dim ws As Worksheet
' Dim Username As Integer
' Dim wsCollection As Collection
' Set wsCollection = New Collection
'
' wsCollection.Add Worksheets("SETT")
' wsCollection.Add Worksheets("PROTOC")
' wsCollection.Add Worksheets("RE18VJ")
' wsCollection.Add Worksheets("RE912VJ")
' wsCollection.Add Worksheets("RE18LJ")
' wsCollection.Add Worksheets("BU12LJ")
' wsCollection.Add Worksheets("Accounts")
'
' For Each ws In wsCollection
' If Application.Username "Torsten Kreuer" Then
' ws.Visible = xlSheetVeryHidden
' Else
' ws.Visible = xlSheetVisible
' End If
' Next ws
---------------------------------------------------------------------------------------
Dim ws
Dim Arr As Integer
Arr = Array("SETT", "PROTOC", "RE18VJ", "RE912VJ", "RE18LJ", "BU12LJ", "Accounts")
If Application.Username "Torsten Kreuer" Then
For Each ws In Worksheets(Arr)
ws.Visible = xlSheetVeryHidden
Else
ws.Visible = xlSheetVisible
End If
Next ws
Vielen Dank und Gruß
Torsten
Anzeige
For und if austauschen!!!
IngoG
Hallo Thorsten,
Du hast die for-schleife hinter der if anweisung stehen...
einfach austauschen
Gruß Ingo
AW: For und if austauschen!!!
Torsten
Sorry Ingo,
ich hoffe, ich werde jetzt nicht lästig:
Dim ws
Dim Arr As Integer
Arr = Array("SETT", "PROTOC", "RE18VJ", "RE912VJ", "RE18LJ", "BU12LJ", "Accounts")
For Each ws In Worksheets(Arr)
If Application.Username "Torsten Kreuer" Then
ws.Visible = xlSheetVeryHidden
Else
ws.Visible = xlSheetVisible
End If
Next ws
Jetzt bleibt Excel an der Stelle "Arr = Array(...)" stehen und meldet etwas von "Typen-unverträglich"! Hast Du eine Idee, was jetzt noch ist?
Vielen Dank
Torsten
Anzeige
AW: For und if austauschen!!!
IngoG
Sorry, hatte ich beim ersten malnicht sofort gesehen ;-)
Dim arr as string
muß es heissen, da du ja strings in deinem Array hinterlegst...
Gruß Ingo
AW: For und if austauschen!!!
Torsten
Hallo Ingo,
trotzdem (leider) gleiche Fehlermeldung: Typen unverträglich. :-((
Gruß
Torsten
AW: For und if austauschen!!!
IngoG
Hallo nochmal,
lauffähig kriegst Du es auf jedenfall, wenn Du arr weglässt und direkt
for each ws in worksheets(array(...))
schreibst
für die Zuweisung eines arrays zu einer variablen müsste ich auch erst nachsuchen.
Gruß ingo
AW: For und if austauschen!!!
Torsten
Hi Ingo,
Dein Vorschlag
For Each ws In Worksheets(Arr("SETT", "PROTOC", "RE18VJ", "RE912VJ", "RE18LJ", "BU12LJ", "Accounts"))
gibt die Fehlermeldung: Erwartet Datenfeld.
Mein Vorschlag: An der Stelle brechen wir ab. Ich habe ja einen Code, der läuft (von Sam). Es sei denn, Du hast noch Lust, hier weiter zu forschen und den Eifer, das Problem zu lösen.
Ein herzliches Dankeschön für Deine Unterstützung (und Geduld :-) )
Viele Grüße
Torsten
Anzeige
Danke für die Rückmeldung
IngoG
Hallo Thorsten,
sorry aber bei mir läuft der Code so wie beschrieben...
weiss jetzt auch nicht wirklich wo der Fehler noch liegen kann.
Gruß Ingo
PS anregung...
IngoG
Hallo Thorsten,
um auf nummer sicher zu gehen solltest Du ein weiteres Macro schreiben, welches beim schließen automatisch die angegebenen sheets wieder auf verryhidden setzt.
wenn Du dies nicht tust, kann nachdem Du in der Datei warst (und zwischendurch abgespeichert hast) jeder die Blätter sehen, wenn er die Datei öffnet ohne macros zuzulassen...
Gruß Ingo

AW: Benutzerabhängig Tabellen einblenden
Luschi
Hallo Torten,
mach es einfach so:
Dim Arr As Variant, i As Long, n As Long, ok As Boolean, _
wieZeigen As Variant
Arr = VBA.Arr = Array("SETT", "PROTOC", "RE18VJ", "RE912VJ", "RE18LJ", "BU12LJ", "Accounts")
wieZeigen = IIf(Application.UserName = "GWS-TKR", True, xlVeryHidden)
n = UBound(Arr)
For i = 0 To n
Worksheets(Arr(i)).Visible = wieZeigen
Next i
Anzeige
AW: erledigt. - An alle fleißigen Helfer .....
Torsten
ein Dankeschön.
Gruß
Torsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige