HERBERS Excel-Forum - das Archiv
Inhalte von ausgeblendeten Spalten löschen
ausgeblendeten

Hallo zusammen, ich nehme Bezug zu meinem bereits eröffneten Thema "Bestimmte Anzahl an Zeilen und Spalten einblenden".
Die Frage wurde zwar noch nicht endgültig gelöst, aber ich stelle diese erstmal zurück, da mir was anderes wichtiger ist ;)
Folgendes Makro blendet Spalten auf Basis eines Dropdowns (mit Zahlen) ein oder aus:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
Application.ScreenUpdating = False
NeueZeile.[K:AX].EntireColumn.Hidden = True
If Target.Value > 0 Then
NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
End If
Application.ScreenUpdating = True
End If
End Sub

Sind die Spalten eingeblendet, werden die Zeilen 41 und 42 mit Inhalt befüllt. Ändere ich den Wert des Dropdowns z.B. von 5 auf 2, verschwinden 3 Spalten. Der Inhalt bleibt aber in allen 5 Spalten bestehen.
Wie muss ich das Makro ändern, damit der Inhalt dieser 3 Spalten gelöscht wird?
Dieses Makro löscht nicht sichtbare Werte, aber wie passe ich es an mein Makro an?
Range("K40",
Range("K40").End(xlDown)).SpecialCells(xlCellTypeVisible).ClearContents

Danke für Hilfe!!
VG, Esther

Nachgefragt
AlexG

Hallo Esther,
geht es nur um die Zeilen 41 und 42?
Oder ist der bereich größer?
Gruß
Alex

AW: Nachgefragt
Esther

Genauer gesagt, sind es die Zeilen 40, 41 und 42. Mehr nicht. Und zwar von Spalte K bis AX.

AW: Nachgefragt
AlexG

Hallo Esther,
deine Vorgeschlagene Code- Zeile löscht nur in sichtbaren Zellen.
Dein vorhaben kann man z.B. so lösen.
 Private Sub Worksheet_Change(ByVal Target As Range)
     Dim rg As Range
     If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
        Application.ScreenUpdating = False
        NeueZeile.[K:AX].EntireColumn.Hidden = True
        Range("K40:AX42").ClearContents
        If Target.Value > 0 Then
           NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
        End If
        Application.ScreenUpdating = True
     End If
 End Sub

Gruß
Alex

AW: Nachgefragt
Esther

Ja, das ist schonmal ganz gut :D danke!
Das Makro löscht aber ALLE Einträge, auch die sichtbaren...
Wenn ich z.B. in 4 Spalten was eingetragen habe und dann feststelle, ich brauche noch eine 5. Spalte, erweitere ich und muss aber alles nochmal eingeben, weil die ersten 4 Einträge auch gelöscht wurden.

AW: Nachgefragt
AlexG

Hallo Esther
dann so
 Private Sub Worksheet_Change(ByVal Target As Range)
     Dim rg As Range
     If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
        Application.ScreenUpdating = False
        NeueZeile.[K:AX].EntireColumn.Hidden = True
        If Target.Value > 0 Then
           NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
        End If
        Range(Cells(40, 11 + Target.Value), Cells(42, "AX")).ClearContents
        Application.ScreenUpdating = True
     End If
 End Sub

Gruß
Alex

AW: Nachgefragt
Esther

Yeah!! Danke dir! Wieder was dazugelernt :)

Bitte, gern geschehen Gruß Alex (owT)
AlexG

Danke, Esther,
Michael

daß ich ne Stunde mit Deinem Problem vertan habe, nur weil Du nen neuen Thread aufgemacht hast!
Gruß,
Michael

AW: Danke, Esther,
Esther

Sch****!! Sorry! *aufdiekniefallundumentschuldigungbitte*
Das war mir so gar nicht beuwsst :( bin so selten in Foren unterwegs, da hab ich echt nicht dran gedacht.
Aber damit deine Arbeit nicht umsonst war: Wie sieht deine Lösung aus? Genauso wie die von Alex?

Jetzt wirklich danke
Michael

Hi Esther,
vielen Dank für Deine Entschuldigung (ich war vorhin leicht sauer, sorry): natürlich angenommen und alles gut.
Ich habe sie auf Deinem alten Thread gepostet, zusammen mit einer Reihe Detailfragen:
https://www.herber.de/forum/messages/1442023.html
Mangels definitiver Info habe ich dort allerdings die komplette Spalte gelöscht, das ist ja zwischenzeitlich überholt.
Aber Du kannst die Fragen ja mal überfliegen und ggf. nochmal antworten. Das mit den Zeilen ist ja noch offen - aber antworte dann bitte dort, sonst kommen wir noch völlig durcheinander.
Happy Exceling,
Michael

AW: Nachgefragt
Esther

Hi nochmal, dieses Makro ist im Einsatz und funktioniert super!!
Jetzt würde ich es gern wo anders einsetzen, aber diesmal nicht für Spalten, sondern Zeilen.
Was genau muss ich da dann ändern? Bloß die Spaltennamen in Zeilennummern und "Column" in "Row"?
(Diesmal müssen die Inhalte nicht gelöscht werden, wenn die Zeilen ausgeblendet werden)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
Application.ScreenUpdating = False
NeueZeile.[K:AX].EntireColumn.Hidden = True
If Target.Value > 0 Then
NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
End If
Range(Cells(40, 11 + Target.Value), Cells(42, "AX")).ClearContents
Application.ScreenUpdating = True
End If
End Sub
VG
Esther

hier erledigt,
Michael

die Antwort wurde in die Datei im anderen Thread eingearbeitet.
M.

Inhalte von ausgeblendeten Spalten löschen
ausgeblendeten

Hallo zusammen, ich nehme Bezug zu meinem bereits eröffneten Thema "Bestimmte Anzahl an Zeilen und Spalten einblenden".
Die Frage wurde zwar noch nicht endgültig gelöst, aber ich stelle diese erstmal zurück, da mir was anderes wichtiger ist ;)
Folgendes Makro blendet Spalten auf Basis eines Dropdowns (mit Zahlen) ein oder aus:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
Application.ScreenUpdating = False
NeueZeile.[K:AX].EntireColumn.Hidden = True
If Target.Value > 0 Then
NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
End If
Application.ScreenUpdating = True
End If
End Sub

Sind die Spalten eingeblendet, werden die Zeilen 41 und 42 mit Inhalt befüllt. Ändere ich den Wert des Dropdowns z.B. von 5 auf 2, verschwinden 3 Spalten. Der Inhalt bleibt aber in allen 5 Spalten bestehen.
Wie muss ich das Makro ändern, damit der Inhalt dieser 3 Spalten gelöscht wird?
Dieses Makro löscht nicht sichtbare Werte, aber wie passe ich es an mein Makro an?
Range("K40",
Range("K40").End(xlDown)).SpecialCells(xlCellTypeVisible).ClearContents

Danke für Hilfe!!
VG, Esther

Nachgefragt
AlexG

Hallo Esther,
geht es nur um die Zeilen 41 und 42?
Oder ist der bereich größer?
Gruß
Alex

AW: Nachgefragt
Esther

Genauer gesagt, sind es die Zeilen 40, 41 und 42. Mehr nicht. Und zwar von Spalte K bis AX.

AW: Nachgefragt
AlexG

Hallo Esther,
deine Vorgeschlagene Code- Zeile löscht nur in sichtbaren Zellen.
Dein vorhaben kann man z.B. so lösen.
 Private Sub Worksheet_Change(ByVal Target As Range)
     Dim rg As Range
     If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
        Application.ScreenUpdating = False
        NeueZeile.[K:AX].EntireColumn.Hidden = True
        Range("K40:AX42").ClearContents
        If Target.Value > 0 Then
           NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
        End If
        Application.ScreenUpdating = True
     End If
 End Sub

Gruß
Alex

AW: Nachgefragt
Esther

Ja, das ist schonmal ganz gut :D danke!
Das Makro löscht aber ALLE Einträge, auch die sichtbaren...
Wenn ich z.B. in 4 Spalten was eingetragen habe und dann feststelle, ich brauche noch eine 5. Spalte, erweitere ich und muss aber alles nochmal eingeben, weil die ersten 4 Einträge auch gelöscht wurden.

AW: Nachgefragt
AlexG

Hallo Esther
dann so
 Private Sub Worksheet_Change(ByVal Target As Range)
     Dim rg As Range
     If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
        Application.ScreenUpdating = False
        NeueZeile.[K:AX].EntireColumn.Hidden = True
        If Target.Value > 0 Then
           NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
        End If
        Range(Cells(40, 11 + Target.Value), Cells(42, "AX")).ClearContents
        Application.ScreenUpdating = True
     End If
 End Sub

Gruß
Alex

AW: Nachgefragt
Esther

Yeah!! Danke dir! Wieder was dazugelernt :)

Bitte, gern geschehen Gruß Alex (owT)
AlexG

Danke, Esther,
Michael

daß ich ne Stunde mit Deinem Problem vertan habe, nur weil Du nen neuen Thread aufgemacht hast!
Gruß,
Michael

AW: Danke, Esther,
Esther

Sch****!! Sorry! *aufdiekniefallundumentschuldigungbitte*
Das war mir so gar nicht beuwsst :( bin so selten in Foren unterwegs, da hab ich echt nicht dran gedacht.
Aber damit deine Arbeit nicht umsonst war: Wie sieht deine Lösung aus? Genauso wie die von Alex?

Jetzt wirklich danke
Michael

Hi Esther,
vielen Dank für Deine Entschuldigung (ich war vorhin leicht sauer, sorry): natürlich angenommen und alles gut.
Ich habe sie auf Deinem alten Thread gepostet, zusammen mit einer Reihe Detailfragen:
https://www.herber.de/forum/messages/1442023.html
Mangels definitiver Info habe ich dort allerdings die komplette Spalte gelöscht, das ist ja zwischenzeitlich überholt.
Aber Du kannst die Fragen ja mal überfliegen und ggf. nochmal antworten. Das mit den Zeilen ist ja noch offen - aber antworte dann bitte dort, sonst kommen wir noch völlig durcheinander.
Happy Exceling,
Michael

AW: Nachgefragt
Esther

Hi nochmal, dieses Makro ist im Einsatz und funktioniert super!!
Jetzt würde ich es gern wo anders einsetzen, aber diesmal nicht für Spalten, sondern Zeilen.
Was genau muss ich da dann ändern? Bloß die Spaltennamen in Zeilennummern und "Column" in "Row"?
(Diesmal müssen die Inhalte nicht gelöscht werden, wenn die Zeilen ausgeblendet werden)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
If Not (Application.Intersect(NeueZeile.[E40], Target) Is Nothing) Then
Application.ScreenUpdating = False
NeueZeile.[K:AX].EntireColumn.Hidden = True
If Target.Value > 0 Then
NeueZeile.Columns("K:AX").Resize(, Target.Value).EntireColumn.Hidden = False
End If
Range(Cells(40, 11 + Target.Value), Cells(42, "AX")).ClearContents
Application.ScreenUpdating = True
End If
End Sub
VG
Esther

hier erledigt,
Michael

die Antwort wurde in die Datei im anderen Thread eingearbeitet.
M.

Bewerten Sie hier bitte das Excel-Portal