2016-06-23 10 views
0

Ich versuche, Spalten zu verbergen, die keine Daten enthalten, während diejenigen mit Daten angezeigt werden, selbst wenn nur ein Element in der Spalte vorhanden ist. Hier ist der Code Ich verwende:Ausblenden von Spalten mit Spaltenüberschriften ohne Daten?

Dim cl as Range 

For Each cl In Range("A2:U2") 
    If cl.Value = "" Then 
     cl.EntireColumn.Hidden = True 
    Else 
     cl.EntireColumn.Hidden = False 
    End If 
Next cl 

Dies funktioniert, aber ich muss A2 U2 zu lesen und versteckt die Säulen, auf der Grundlage dieser Reihe, darunter auch solche, die über Informationen zu tun. Müsste ich etwas wie xldown hinzufügen, um alles von diesem Punkt aus zu lesen, um festzustellen, ob es die Spalte verbergen sollte? Sehr geschätzt für die Hilfe!

+0

Zyklus durch Ihre Spalten und verwenden 'counta' oder' countblank' – findwindow

+0

@findwindow Ich bin immer noch all das zu lernen, wie würde ich könnte über das zu tun? – kjay

+1

Sie haben 'Für jeden cl in Bereich (" A2: U2 ")' so nehme ich an, Sie wissen, wie man Schleife. Tun Sie einfach etwas wie 'if coza (col)> 1' innerhalb der Schleife. Edit: recherchiere es und versuche es dann wieder mit deinem aktualisierten Code und ich werde es mir ansehen. – findwindow

Antwort

0

einen Scheck hinzufügen für

If cl.end (xlDown).Row = ActiveSheet.Rows.Count 
0

einfach Ihre If Zustand

aus ersetzen
If cl.Value = "" Then 

zu

If Application.WorksheetFunction.CountA(Columns(cl.Column).EntireColumn) = 1 Then 

Dies sagt Ihnen, dass es nur einen Wert in der gesamten Spalte ist. In Ihrem Fall sollte es Header sein.

Es sollte so etwas wie folgt aussehen:

Sub demo() 
    Dim cl As Range 

    For Each cl In Range("A2:U2") 
     If Application.WorksheetFunction.CountA(Columns(cl.Column).EntireColumn) = 1 Then 
      cl.EntireColumn.Hidden = True 
     Else 
      cl.EntireColumn.Hidden = False 
     End If 
    Next cl 
End Sub 
+0

Hallo und danke für die Antwort. Ich habe es benutzt und es versteckt keine Zeilen ohne Daten. Ich schätze, es ist, weil es die Header liest? Ich habe versucht, dies zu ändern, so dass es alles unter den Headern liest, da es Spalten gibt, die keine Daten haben und ich brauche sie nicht, aber immer noch eine harte Zeit. – kjay

+0

@kjay - 'If' Bedingung wird mit' = 1' verglichen, um zu überprüfen, dass die Spalte nur Header und keine Daten hat. Es funktioniert für mich mit einigen Testdaten. Ist es möglich, dass Sie Ihr Blatt teilen, damit ich es sehen kann? – Mrig

+0

kann ich nicht wirklich, da es eine Arbeitsdatei ist. Ich habe es in den Break-Modus gestellt und habe Schritt für Schritt gesehen, was passiert. Wenn es zu meiner Spalte I kommt, liest es, dass es leer ist, aber es geht direkt zu der falschen Aussage statt wahr. – kjay

Verwandte Themen