375 Aufrufe
Gefragt in Datenbanken von
Wie kann ich mit VBA-Code: Spalten automatisch ausblenden, wenn in einer bestimmten Zelle der Spalte nichts drin ist? Z.B: Mein Urlaubskalender: Kommt ein Mitarbeiter hinzu ist die Zelle ausgefüllt und er soll die Spalte ganz normal anzeigen. Sobald kein Name in der Zelle steht, soll er die ganze Spalte ausblenden.
Siehe Tabelle - Februar - Mai hab ich mal manuell ausgeblendet - Vorlage ist für 40 MA.

8 Antworten

0 Punkte
Beantwortet von

Februar - Mai hab ich mal manuell ausgeblendet - Vorlage ist für 40 MA.

Tabelle

0 Punkte
Beantwortet von
In VBA diesen Code in die entsprechende Tabelle kopieren

wobei ich immer erst die Spalte daneben ausblenden würde (damit eine Spalte übrig ist in die man einen neuen Namen eintragen kann) - falls man einen Namen in der Mitte löschen würde, passiert erstmal nichts, falls man 2 nebeneinander löscht, kann aber dann auch eine Spalte in der Mitte ausgeblendet werden

Habe Zeile 4 genommen, weil diese so aussah als ob sie überall befüllt ist (ansonsten müsste man im Code wahrscheinlich alle Spaltennummer, die ausgeblendet werden sollen erfassen)

Private Sub Worksheet_Change(ByVal Target As Range)
For Each myCell In Intersect(Target, ActiveSheet.UsedRange)
    If myCell.Row = 4 And myCell.Value = "" Then
        If Cells(myCell.Row, myCell.Column + 1) = "" Then
             Columns(myCell.Column + 1).Select
             Selection.EntireColumn.Hidden = True
        End If
    ElseIf myCell.Row = 4 And myCell.Value <> "" Then
        Columns(myCell.Column + 1).Select
        Selection.EntireColumn.Hidden = False
    End If
Next
End Sub
0 Punkte
Beantwortet von
Vielen Dank für die schnelle Antwort, leider bin ich glaub zu doof dazu damit das sauber funktioniert. Kann ich die Liste per Mail kommunizieren unter h.necker@ssvreutlingen.de ? Dann könnten Sie es mal versuchen ob das irgendwie zu integrieren ist?
0 Punkte
Beantwortet von
Bearbeitet
Vielen Dank für die schnelle Antwort, leider bin ich glaub zu doof dazu damit das sauber funktioniert. Kann ich die Liste per Mail kommunizieren unter h.necker@ssvreutlingen.de ? Dann könnten Sie es mal versuchen ob das irgendwie zu integrieren ist?

Wenn ich ein Modul erstelle mit genau dem Text passiert noch nichts außer das hier.

Die Name kommen dynamisch über ein anderes Tabellenblatt hinzu oder entferne ich sie dort. Die Anzahl der Spalten in dieser Übersicht bleibt gleich. Nur soll immer nach Zeile 4 geschaut werden - ist ein Name drin - dann einblenden, ist keiner drin, soll die Spalte wieder ausgeblendet werden.

In dieser Tabelle holt er quasi nur die Daten aus einem anderen Tabellenblatt
0 Punkte
Beantwortet von

Alles klar - zumindest hätte ich mal die Fragestellung nun verstanden

1) Der code soll nicht in ein Modul sondern in das Tabellenblatt

Tabelle1 in meinem Fall in Deinem/Ihrem das Baltt in dem die Spalten ausgeblendet werden sollen

2) Da die Eingabe in einem anderen Blatt erfolgt und es daher (nehme ich an) reicht die Spalten au/einzublenden wenn man das Ansichtsblatt wieder aktiviert - wäre dann dieser Code ausreichend (bzw. würde der andere auch nicht funktionieren, weil die Zellen ja nicht aktiv verändert werden)

Private Sub Worksheet_Activate()
For myColumn = 1 To ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
    If Cells(4, myColumn) = "" Then
        Columns(myColumn).Select
        Selection.EntireColumn.Hidden = True
    Else
        Columns(myColumn).Select
        Selection.EntireColumn.Hidden = False
    End If
Next
End Sub

0 Punkte
Beantwortet von
Bearbeitet
Jetzt hat sich zumindest was getan, allerdings hat er jetzt alles ausgeblendet...

Das kommt bestimmt weil da Formeln drin sind wie z.B
=MTRANS(FILTER(MA_NAMEN;ISTTEXT(MA_NAMEN)))

Oder hat es damit nichts zu tun? In Zeile 4 sind auch KW Tag usw. wo ohne Formeln sind und die zumindest hätte er nicht ausblenden sollen
+1 Punkt
Beantwortet von
 
Beste Antwort
Guten Morgen

Vermute Du hast irgendwo in einer anderen Zeile verbundene Zellen ?

An das hatte ich beim testen nicht gedacht. (da blendet er alle Spalten die mit einer auszublendenden verbunden sind mit aus)

Mit dem folgender Adaption sollte es dann aber funktionieren

Private Sub Worksheet_Activate()
For myColumn = 1 To ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
    If Cells(4, myColumn) = "" Then
        Columns(myColumn).Hidden = True
    Else
        Columns(myColumn).Hidden = False
    End If
Next
End Sub
0 Punkte
Beantwortet von
Guten Morgen,

der absolute Hammer!

Endlich funktioniert es!

Vielen herzlichen Dank und ein schönes WE.
...