Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Nur Spalten einblenden, wenn bestimmter Wert in einer Zelle
#1
Hallo zusammen,


ich möchte, dass nur die Spalten eingeblendet werden, wo in der Zeile ein bestimmtes Datum steht. 

Also:  Zeige mir nur die Spalten an, in welcher der Wert aus I1 in Zeile 3 steht. 


Ich kriege das aber einfach nicht hin. Ich habe im Anhang mal ein Beispiel aufgebaut, um euch zu zeigen, was ich erreichen will. 

Ich danke euch!


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
Hallo!
Zitat:Ich kriege das aber einfach nicht hin. 
Dem entnehme ich, dass du bereits Versuche unternommen hast. Zeig doch mal her.

Zitat:Ich habe im Anhang mal ein Beispiel aufgebaut
Und wieso lädst du diese Datei dann nicht hoch? Niemand wird deine Datei nachbauen wollen.
Schöne Grüße
Berni
Antworten Top
#3
Hallöchen,

Zitat:Und wieso lädst du diese Datei dann nicht hoch? Niemand wird deine Datei nachbauen wollen.

hier mal eine Lösung ohne Beispieldatei Smile Es wird immer nur ausgeblendet, Du kannst nacheinander bei Eingabe mehrere Daten mehrere Spalten ausblenden. Einblenden tust Du sie dann mit der Maus ...

Code:
Sub Ausblenden()
'Variablendeklaration
Dim iCnt%
'Schleife ueber alle Daten in Zeile 3
'(max. 366 Tage bei Schaltjahr)
For iCnt = 2 To 367
  'Wenn Inhalt der Zelle gleich Inhalt I1, dann ausblenden
  If Cells(3, iCnt) = Cells(1, 9) Then Columns(iCnt).EntireColumn.Hidden = True
'Ende Schleife ueber alle Daten in Zeile 3
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • excelfragen
Antworten Top
#4
Hallo,

ich hatte das so verstanden, dass du nur die Spalten eingeblendet haben möchtest, wenn in Zeile 3 die Spalte das Datum aus $I$1 hat.
Dann musst du bei Andrés Lösung in der "IF-Zeile" nur das "=" durch "<>" austauschen oder folgende Zeile verwenden:

Code:
Columns(iCnt).EntireColumn.Hidden = Cells(3, iCnt) <> Cells(1, 9)
 
Das Ganze kannst du auch im entsprechenden Tabellenmodul einbetten, so dass der Code bei jeder Änderung des Wertes in $I$1 ausgeführt wird:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim iCnt%
   If Target.Address = "$I$1" Then
       For iCnt = 2 To 255
           'If Cells(3, iCnt) <> Cells(1, 9) Then Columns(iCnt).EntireColumn.Hidden = True
           Columns(iCnt).EntireColumn.Hidden = Cells(3, iCnt) <> Cells(1, 9)
       Next
   End If
End Sub

Dabei solltest du allerdings die Tabelle so aufbauen, dass das Datum, das du ändern möchtest, nicht zu den Spalten gehört, die ausgeblendet werden.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
[-] Folgende(r) 1 Nutzer sagt Danke an LuckyJoe für diesen Beitrag:
  • excelfragen
Antworten Top
#5
Hallöchen Joe,

ein selbstkritisches :16:

Zitat:ich hatte das so verstanden, dass du nur die Spalten eingeblendet haben möchtest, wenn in Zeile 3 die Spalte das Datum aus $I$1 hat.
Wo Du recht hast, hast Du recht …
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • excelfragen
Antworten Top
#6
Hallo zusammen,

vielen Dank erstmal für eure Mühen. 

Jetzt lade ich wirklich mal die Excel-Datei auch hoch Smile Sorry!

Ich habe mich jetzt daran noch ein wenig versucht, aber bin kläglich gescheitert...

Es sollen bei Eingabe des Datum in I1 alle Spalten ausgeblendet werden. Ausnahme hierbei ist die Spalte A1. 

Im optimalsten Fall, sollte es möglich sein, das wenn in I1 als variable Eingabe z.B. 04.01.2019 steht, alle Spalten ausgeblendet werden, außer die Spalte A als Festwert und jeweils die Folgespalte in der der eingetragene Wert steht. In diesem Beispiel sollten also alle Spalten verschwinden, bis auf die Spalten A,H und I.


Angehängte Dateien
.xlsm   benstat2_makro.xlsm (Größe: 119,21 KB / Downloads: 3)
Antworten Top
#7
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$1" Then
Application.ScreenUpdating = False
Columns.Hidden = True
Columns(1).Hidden = False
Columns(9).Hidden = False
Columns(Application.Match(Target.Value2, Rows(4), 0)).Resize(, 2).Hidden = False
Application.Goto Cells(1), True
Application.ScreenUpdating = True
End If
End Sub
Gruß Uwe
Antworten Top
#8
Hi,

ich würde noch prüfen, ob $I$1 gar nichts enthält, dann kannst du mit dem Löschen der Zelle $I$1 alle Spalten wieder einschalten:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

   Dim i
   Dim letzteSpalte
   
   letzteSpalte = ActiveSheet.Cells(4, Cells.Columns.Count).End(xlToLeft).Column
   
   If Target.Address = "$I$1" Then
       Application.ScreenUpdating = False
       For i = 2 To letzteSpalte
           Columns(i).EntireColumn.Hidden = Cells(4, i) <> Cells(1, 9)
       Next
       Columns(9).EntireColumn.Hidden = False
       If Target.Value = "" Then Columns.Hidden = False
       Application.ScreenUpdating = True
   End If

End Sub

Außerdem gibt das keinen Fehler bei z.B. "01.01.2019".

Viel Erfolg.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste