2017-05-20 4 views
0

Ich möchte alle Spalten von Daten, die Jahre nicht die letzten 2 Jahre sind, ausblenden. Dafür (ich weiß nicht, ob es der richtige Ansatz ist oder nicht) habe ich einige Untersuchungen durchgeführt, da ich nichts über Excel-Programmierung weiß, und ich habe dieses VBA-Skript erstellt, aber es scheint nicht zu funktionieren:Spalten eines Jahres ausblenden

Function OcultarFechas(Range) 
Rg1 = Range ' B2:AA2 
Flag = "ok" 
For Each c1 In Range(Rg1).Cells 
    If Year(c1) <> Year(Date) Then 
     Columns(c1.Column).EntireColumn.Hidden = True 
    Else 
     Flag = "notok" 
    End If 
    If Flag = "notok" Then Exit For 
    Next c1 
End Function 

Es wäre wünschenswert, dass die Skripte ausgeführt wird, wenn ich die Tabelle öffnen, aber im Augenblick mit diesem Code, den ich glaube, ich brauche wie die Funktion auf einer Zelle zu nennen: „= OcultarFechas (B2: AA2)“.

PS. Die Daten sind geordnet, deshalb verlasse ich die for-Schleife, wenn das aktuelle Jahr gefunden wird, und aus dieser Spalte muss ich sie einblenden.

Antwort

1

Sie können eine Spalte nicht mit UDF ausblenden.

so etwas wie dieses Try ...

Sub HideColumns() 
Dim c As Long, lc As Long 
lc = Cells(2, Columns.Count).End(xlToLeft).Column 
Columns.Hidden = False 
For c = 2 To lc 
    If Year(Cells(2, c)) < Year(Date) Then 
     Columns(c).Hidden = True 
    End If 
Next c 
End Sub 

Der obige Code wird die letzte Spalte verwendet in Row2 und Schleife durch die Säule 2 auf die letzte Spalte gefunden und überprüfen Sie das Jahr Zustand und blenden Sie die Spalte entsprechend finden.

Um diese Prozedur beim Öffnen der Arbeitsmappe automatisch aufzurufen, fügen Sie den folgenden Code in ThisWorkbook Module ein.

Private Sub Workbook_Open() 
Call HideColumns 
End Sub 
+0

Ich habe das ausprobiert und funktioniert ziemlich gut, nur eine Frage einer Säule versteckt war, aber es gab kein Inhalt drin, aber ich konnte das umformatieren und es wird perfekt funktionieren. Wie kann ich dies bei jedem Öffnen der Tabelle automatisch tun? Danke – Fjallbacka

+0

Edited die Lösung. Bitte guck dir das an. – sktneer

+1

Um eine Spalte zu überspringen, wenn eine Zelle in dieser Spalte in Row2 leer ist, ändern Sie die IF-Anweisung mit --- If Year (Zellen (2, c)) "" Dann – sktneer

Verwandte Themen