Benutzerabhängig Tabellen einblenden
 |
Betrifft: Benutzerabhängig Tabellen einblenden
von: Torsten K.
Geschrieben am: 12.08.2004 09:48:18
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
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: Dr.
Geschrieben am: 12.08.2004 09:52:01
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
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: sergiesam
Geschrieben am: 12.08.2004 09:57:13
Guter Tipp aber er will nicht alle ausblenden sondern nur bestimmte Blätter... (siehe mein Beitrag).
Sam
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: Dr.
Geschrieben am: 12.08.2004 10:01:14
Stimmt. Erst lesen, dann schreiben. ;-)
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: sergiesam
Geschrieben am: 12.08.2004 09:55:51
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
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: IngoG
Geschrieben am: 12.08.2004 09:59:56
Hallo sam,
versuchs doch mal mit:
for each ws in worksheets(arr)
Gruß Ingo
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: sergiesam
Geschrieben am: 12.08.2004 10:20:08
Hi,
stimmt, schön das es sooooo viele wege gibt...
Sam
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: Torsten K.
Geschrieben am: 12.08.2004 10:41:07
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
Betrifft: For und if austauschen!!!
von: IngoG
Geschrieben am: 12.08.2004 10:46:17
Hallo Thorsten,
Du hast die for-schleife hinter der if anweisung stehen...
einfach austauschen
Gruß Ingo
Betrifft: AW: For und if austauschen!!!
von: Torsten K.
Geschrieben am: 12.08.2004 10:51:30
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
Betrifft: AW: For und if austauschen!!!
von: IngoG
Geschrieben am: 12.08.2004 10:54:49
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
Betrifft: AW: For und if austauschen!!!
von: Torsten K.
Geschrieben am: 12.08.2004 11:10:57
Hallo Ingo,
trotzdem (leider) gleiche Fehlermeldung: Typen unverträglich. :-((
Gruß
Torsten
Betrifft: AW: For und if austauschen!!!
von: IngoG
Geschrieben am: 12.08.2004 11:34:43
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
Betrifft: AW: For und if austauschen!!!
von: Torsten K.
Geschrieben am: 12.08.2004 11:45:01
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
Betrifft: Danke für die Rückmeldung
von: IngoG
Geschrieben am: 12.08.2004 12:20:11
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
Betrifft: PS anregung...
von: IngoG
Geschrieben am: 12.08.2004 11:14:06
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
Betrifft: AW: Benutzerabhängig Tabellen einblenden
von: Luschi
Geschrieben am: 12.08.2004 10:18:50
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
Betrifft: AW: erledigt. - An alle fleißigen Helfer .....
von: Torsten K.
Geschrieben am: 12.08.2004 11:47:21
ein Dankeschön.
Gruß
Torsten
Beiträge aus den Excel-Beispielen zum Thema "Benutzerabhängig Tabellen einblenden"