Microsoft Excel

Herbers Excel/VBA-Archiv

Ein- ausblenden von Spalten

Betrifft: Ein- ausblenden von Spalten von: Michael Handtke
Geschrieben am: 12.11.2014 20:02:27

Hallo User,
zurzeit bin ich dabei für meinen privaten Gebrauch eine Excel-Tabelle zu gestalten, wobei ich Eure Unterstützung benötige, da ich als Anfänger keine Ahnung von VBA-Programmierung habe.

Es geht um das aus- und einblenden von Spalten.
In der ersten Zelle A1 steht das aktuelle Tagesdatum =heute()
In der vierten Zeile von C4:NF4 steht in jeder Zelle ein Tagesdatum TT.MM;@
Nun benötige ich ein VBA-Code welcher sich das aktuelle Tagesdatum in Zelle A1 anschaut und
die Spalten ausblendet welche sich in der Vergangenheit befinden.
Zusätzlich wäre es schön wenn man über das Betätigen einer Taste alle ausgeblendeten Spalten wieder sichtbar machen kann.

Ich hoffe dass Ihr mir helfen könnt. Meinen besten Dank im Voraus

Michael

  

Betrifft: AW: Ein- ausblenden von Spalten von: Matze Matthias
Geschrieben am: 12.11.2014 21:53:02

Hallo Michael,

teste das mal, sollte funktionieren (Code in die Tabelle)

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Const Auswahl = "A1"
Dim Bereich As Range
Set Bereich = Range("C4:NF4")

Dim S As Range

If Target.Address(0, 0) = Auswahl Then
Application.ScreenUpdating = False
    Bereich.EntireColumn.Hidden = False 'alle anzeigen
    
    For Each S In Bereich
        If S < Target Then
            S.EntireColumn.Hidden = True
        End If
    Next S
    
End If
Application.ScreenUpdating = True
End Sub
So gute N8
Gruß Matze


  

Betrifft: Bessere Variante von: Matze Matthias
Geschrieben am: 12.11.2014 22:01:12

Hallo,

Die Variante ist schöner , leere die Zelle A1 und ALLE Spalten werden angezeigt,

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim S As Range
On Error GoTo ErrExit
If Not Intersect(Target, Range("$A$1")) Is Nothing Then
Application.EnableEvents = False
Application.ScreenUpdating = False
        For Each S In Range("C4:NF4")
            S.EntireColumn.Hidden = S.Value < Target.Value
        Next

        If Target.Value = "" Then 'leere Zelle A1 zeigt ALLE an!!
        Columns("C:NF").EntireColumn.Hidden = False
        End If
 End If
ErrExit:
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Beim ersten Code müsstest du den 1.1. eingeben um alle einzublenden,
besser gesagt das KLEINSTE Datum

Gruß Matze


  

Betrifft: AW: Ein- ausblenden von Spalten von: Michael Handtke
Geschrieben am: 13.11.2014 13:01:53

Hallo Matze,

ersteinmal rechtherzlichen Dank für deine schnelle hilfe, leider klappt die sache noch nicht so.
ich habe den Code eingpflegt, aber wenn ich diesen Starte kommt ein Fester wo normalerweise die Code
vorhanden sind. Leider ist dort deiner nicht vorhanden? Um das VBA zu testen habe ich in Zelle A1 ersteinmal ein festes Datum gesetzt. Ich habe einmal die Datei hochgeladen, so kannst Du schauen wo es hapert ;-)

https://www.herber.de/bbs/user/93745.xlsm

Micha


  

Betrifft: AW: Ein- ausblenden von Spalten von: Matze Matthias
Geschrieben am: 13.11.2014 17:01:37

Hallo Michael,
deine Datenreihe geht vom 1.1.2015 - 3.1.2016

wenn du nur den 12.5. zb eingibst wird dies nicht als der 15.5.2015 sondern als 12.5.2014 behandelt!

Nutze zur Eingabe den Ziffern Block 12/5/15 geht schneller.

Gruß Matze


  

Betrifft: AW: Ein- ausblenden von Spalten von: Michael Handtke
Geschrieben am: 13.11.2014 18:19:22

Hallo Matze,

so nun läuft alles :-) !! Nochmals rechtherzlichen Dank für die schnelle Unterstützung und Hilfe.

Micha


 

Beiträge aus den Excel-Beispielen zum Thema "Ein- ausblenden von Spalten"