Spalten aufgrund des Users ein- bzw ausblenden

Hallo Excelperten,

Ich habe eine Exceldatei gebastelt. In der Zeile 3 stehen die Namen (= den Usernamen) der Kollegen, die EIntragungen vornehmen dürfen/sollen.

So soll es im Bestenfall werden:

Alle Spalten mit Usernamen in Zeile 3 sollen grundsätzlich ausgeblendet sein.
Nur die Spalte des aktuellen Users soll eingeblendet werden.

Prinzipiell habe ich etwas ähnliches schonmal hinbekommen - aber irgendwie will das nicht so ganz funktionieren…

Hat da einer eine Idee?

Sollen wir jetzt raten, was da falsch ist? Okay. In Zeile 7 deines VBA ist die Zuweisung falsch.

Oder zeigst du uns deinen Ansatz?

Hi FLowerwomen,

irgendwie vergessen den Quellcode einzufügen…

Hier mein Code dafür:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)

With activesheet
.Unprotect („Hoffnung“)
.Range(„C:X“).Hide = True
.Protect („Hoffnung“)
End With

End Sub

Private Sub Workbook_Open()

Dim sp As Integer

activesheet.Unprotect („Hoffnung“)

On Error GoTo errorhdl

sp = 25

Do

If Cells(3, sp) = Application.UserName Then
activesheet.colums(sp).Hide = False
Exit Do
End If

Loop Until sp = 3

activesheet.Protect („Hoffnung“)

GoTo ausgang

Errorhandler:

MsgBox „Fehler in Sub Fehler0“ & vbCrLf & "Fehlernummer: " & Err.Number & vbCrLf & "Fehlerbeschreibung: " & Err.Description

ausgang:

End Sub

Das passt nicht zu

Und Boah, Goto! wie wäre es mit einem Sub?

Die Schleife terminiert nicht. oben setzt du sp auf 25. Danach fasst du das nicht wieder an. Aber die Schleife endet nicht, bis sp=3 ist.

Ich hab die Woche schonmal einen ähnlichen Fall gehabt und mag es nicht nochmal schreiben. Das trifft alles auch auf dich zu.

Du solltest deinem Chef ganz dringend ein Buch über gute Programmierpraxis aus dem Kreuz leiern.

1 Like

Hi Flowerwomen,

der zähler bei sp (also dass runtergezählt wird) hatte ich auch gesehen und bereits eingebaut.

Beim Öffnen wird die entsprechende Spalte nicht eingeblendet. Das Startmakro läuft ohne Fehler durch.

Mein Username ist korrekt auch in der 3. Spalte, dennoch bleibt die Spalte ausgeblendet.

Beim Schließen wirft er mich an folgender Stelle jetzt immer raus:

For i = 3 To 25
.colums(i).Hide
Next

Mit welcher Fehlermeldung?

Da fehlt was. Mit dem .colums(i).Hide sagst du, dass Spalten versteckt werden sollen. Aber du sagst nicht, in welchem Blatt. Und ich glaube, da musst du auch ein true setzen.

Warum befragen wir nicht die offizielle Dokumentation?

https://msdn.microsoft.com/de-de/vba/excel-vba/articles/range-hidden-property-excel

For i = 3 To 25   
   Worksheets("Hoffnung").Columns(i).Hidden = True
Next
1 Like

Hi,

habs - sorry! Habs heute scheinbar voll auf den Augen. zwei Rechtschreibfehler (colums anstatt columns und hide statt hidden)

läuft jetzt 1a. Trotz Allem vielen lieben Dank für die Hilfe.

Lieben Gruß

René

Ist ja toll, dass du da jetzt ganz allein draufgekommen bist obwohl ich dir das eine halbe Stunde eher schon mundgerecht geantwortet habe.

Und mit Herzchen hast du auch nicht um dich geworfen. Ich gehe jetzt 2 Tage in mein Taschentuch weinen.

3 Like