Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Spalte ausblenden, wenn Bedingung erfüllt





Frage

Guten morgen, ich habe ein Tabellenblatt mit insgesamt 256 Spalten, in welchen auch größtenteils Daten enthalten sind. Wenn bestimmte Bedingungen in der Tabelle erfüllt sind, bleibt die Zeile 1 in der Spalte leer. Nun bin ich auf der Suche nach einem Makro, welches prüft, ob in Zeile 1 ein Ergebnis steht oder nicht. Wenn nein, dann sollte die Spalte/n ausgeblendet werden. Leider finde ich dergleichen nur für das ausblenden von Zeilen. Kann mir jemand helfen, ein Makro zu erstellen, welches nicht die Zeile, sondern die Spalte ausblendet? Danke Egon

Antwort 1 von meinTipp

Hallo Egon,

die Lösung ist nicht weit von deinem Post. Schau hier .

Gruss Rolf

Antwort 2 von Egon1967

Hallo Rolf,

ich hatte dieses Makro bereits gesehen, konnte es aber in meiner Datei nicht zum laufen bekommen.

Leider verstehe ich auch (noch) zu wenig von Makros, um die Funktionen besser lesen zu können.

Gruß Egon

Antwort 3 von JoeKe

Moin Egon,

folgender Code blendet die Spalten die in der ersten Zeile leer sind aus:

Option Explicit

Sub Spalte_ausb()
Dim intSpalte As Integer
For intSpalte = 1 To Cells(2, Columns.Count).End(xlToLeft).Column
If Cells(1, intSpalte) = "" Then
Columns(intSpalte).EntireColumn.Hidden = True
End If
Next
End Sub


Und folgender alle Spalten wieder ein:

Sub spalte_einb()
Cells.EntireColumn.Hidden = False
End Sub


Gruß

JöKe

Antwort 4 von Egon1967

Hallo Jöke,

die Funktion funktioniert, wenn auch nicht ganz so wie gedacht.
Ich habe mir erst (zur Sicherheit) alle Spalten anzeigen lassen (Sub spalte_einb()) und dann das Prüfmakro laufen lassen (Sub Spalte_ausb()).

Nun werden mir zwar die Spalten ausgeblendet, wo die bisherige Funktion die Zelle als leer ausweißt, aber die Spalten, die ich nicht nutze (ab ca DA), werden nicht ausgeblendet.

Die blende ich mit einem selbstgebauten Makro in jedem Tabellenblatt einezln aus, was aber umständlich ist, da jedes Tabellenblatt unterschiedlich viel genutzte Spalten hat.

Gibt es da eine Abhilfe?

Ferner habe ich versucht, dieses Makro in einer anderen Datei laufen zu lassen, um "sie ein wenig hübscher zu machen".
Dazu wäre aber das Kontrollfeld nicht die Zeile 1, sondern die Zeile 4.
Ich habe jetzt gut 2 Stunden am bisherigen Makro gebastelt, um es auf Zeile 4 umzustricken, aber nicht geschafft.
Magst Du mir an meinem Brett vorm Kopf ein kleinen Hinweiß-Zettel anschlagen, wie ich das ändern kann?

Danke Egon

Antwort 5 von JoeKe

Hallo Egon,

um alle Spalten auszublenden auch die nicht genutzten, ändere den Code so:

Option Explicit

Sub Spalte_ausb()
Dim intSpalte As Integer
Application.ScreenUpdating = False
For intSpalte = 1 To 256
If Cells(1, intSpalte) = "" Then
Columns(intSpalte).EntireColumn.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub


In der Zeile:

If Cells(1, intSpalte) = "" Then


wird durch die Zahl (hier 1) die Zeile im Tabellenblatt bestimmt. Wenn du nun in der 4. Zeile nach Leerzellen suchen willst musst du die 1 durch 4 ersetzen.

Gruß

JöKe