Per Zellenklick unbenutzte Zellen ausblenden

Hallo

Folgende Herausforderung:

Ich habe in Spalte A1:A50 Namen und in B, C und D jeweils Einträge oder nichts drin stehen.

Jetzt sollten, wenn ich z.B. auf A2 klicke, die Spalten B2, C2 oder D2 die nichts enthalten ausgeblendet werden.

Hätte jemand eine Idee das umzusetzen.

Danke & Gruss

Hi,

verstehe nicht, wie du dir das vorstellst.

Wenn z.B. in der Ersten Zeile werte enthalten sind und in der zweiten nicht, möchtest du in der zweiten Zeile die Spalten ausblenden?

Wenn du Spalten ausblendest, dann doch nur ganz, dann wäre auch in Zeile eins nichts mehr zu sehen. Oder was meinst du mit ausblenden? einzelne Zellen C2, D2 usw kann man nicht ausblenden, immer nur ganze Zeilen und Spalten.

Hi

Wenn z.B. in der Ersten Zeile werte enthalten sind und in der
zweiten nicht, möchtest du in der zweiten Zeile die Spalten
ausblenden?

wenn sie leer ist ja, ansonsten nicht

Wenn du Spalten ausblendest, dann doch nur ganz, dann wäre
auch in Zeile eins nichts mehr zu sehen.

Genau, die ganze Spalte(die leer ist) wir dann ausgeblendet und nur die Spalten die Inhalte haben… bleiben.

Oder was meinst du mit ausblenden?

Ausblenden = Ausblenden, engl. hide

einzelne Zellen C2, D2 usw kann man nicht ausblenden, immer nur :ganze Zeilen und Spalten.

ist mir bekannt, möchte ich ja auch nicht

Ich stelle mir eine Art Filter vor, evt mit Intersect. Habe keine Idee
wie ich das umsetzen könnte.

Gruss

Ich habe in Spalte A1:A50 Namen und in B, C und D jeweils
Einträge oder nichts drin stehen.

Jetzt sollten, wenn ich z.B. auf A2 klicke, die Spalten B2, C2
oder D2 die nichts enthalten ausgeblendet werden.

Hallo Lanzma,

was soll danach geschehen, also wenn du wieder woanderst hinklickst?
Spalten wieder einblenden?

Und wurde ja schon gesagt, Spalten B2, C2 usw. gibt es nicht.
B, C,D usw. gibt es.

Gruß
Reinhard

Hallo Reinhard

was soll danach geschehen, also wenn du wieder woanderst
hinklickst?

Solange ich auf A1:A50 klicke, sollte dann diese Regel für die entsprechende Zeile funktionieren.

Also ich klicke auf A10, da B10 und C10 leer sind… und D10 einen Wert hat… werden Spalte B und C ausgeblendet.
Wenn ich auf A12 klicke, in B12 und C12 haben einen Wert, D10 ist leer… wird Spalte D ausgeblendet.
Sobald ich ausserhalb A1:A50 klicke soll wieder alles eingeblendet sein.

Und wurde ja schon gesagt, Spalten B2, C2 usw. gibt es nicht.
B, C,D usw. gibt es.

Das habe ich etwas falsch formuliert.

Gruss
Lanzma

Hi,

die Spalten willst du also doch nicht ausblenden, da ja sonst die Werte der Zeile darüber auch nicht mehr zu sehen wären. Was du willst hat offenbar also nichts mit ausblenden (engl. hide) zu tun. Dass man einzelen Zellen nicht ausblenden kann, weisst du angeblich ja schon. Was du willst, ist die Werte rechts neben leeren Zellen „rüberziehen“, damit keine Lücken entstehen.

Das geht bestimmt mit einem Script, da kann ich momentan aber nicht weiter drüber nachdenken, muss noch Nachhilfe in Englisch nehmen: ausblenden = hide - dass kann ich jetzt schon…

Wer überigens meint, anderen was auf Englisch erklären zu müssen, sollte zunächst mal lernen, seine Gedanken auf Deutsch auszurücken.

was soll danach geschehen, also wenn du wieder woanderst
hinklickst?

Solange ich auf A1:A50 klicke, sollte dann diese Regel für die
entsprechende Zeile funktionieren.
Sobald ich ausserhalb A1:A50 klicke soll wieder alles
eingeblendet sein.

Hallo Lanzma,

probiers mal so, Code im Modul des Blattes:

Option Explicit

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Columns("B:smiley:").Hidden = False
If Target.Count 1 Then Exit Sub
If Not (Intersect(Target, Range("A1:A50")) Is Nothing) Then
 Columns("B").Hidden = Target.Offset(0, 1).Value = ""
 Columns("C").Hidden = Target.Offset(0, 2).Value = ""
 Columns("D").Hidden = Target.Offset(0, 3).Value = ""
End If
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Grüezi Lanzma2

Ich habe in Spalte A1:A50 Namen und in B, C und D jeweils
Einträge oder nichts drin stehen.

Jetzt sollten, wenn ich z.B. auf A2 klicke, die Spalten B2, C2
oder D2 die nichts enthalten ausgeblendet werden.

Du kannst dazu das Selection_Change()-Event verwenden und z.B. wie folgt umsetzten:

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
 Set Target = Intersect(Target, Range("A1:A50"))
 If Not Target Is Nothing Then
 If Target.Cells.Count = 1 Then
 Application.EnableEvents = False
 Application.ScreenUpdating = False
 Dim rngHide As Range
 Set rngHide = Intersect(Target.EntireRow, Range("A:smiley:"))
 rngHide.EntireColumn.Hidden = False
 If Application.WorksheetFunction.CountBlank(rngHide) \> 0 Then
 rngHide.SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
 End If
 Application.EnableEvents = True
 Application.ScreenUpdating = True
 End If
 End If
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)
Set Target = Intersect(Target, Range(„A1:A50“))
If Not Target Is Nothing Then
If Target.Cells.Count = 1 Then
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim rngHide As Range
Set rngHide = Intersect(Target.EntireRow,
Range(„A:smiley:“))
rngHide.EntireColumn.Hidden = False
If
Application.WorksheetFunction.CountBlank(rngHide) > 0 Then

rngHide.SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden =
True
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End If
End If
End Sub

Grüezi Thomas,

wenn schon so, dann
Set rngHide = Intersect(Target.EntireRow,Range(" B :smiley:"))
sonst ist Spalte A wech und man kann nie mehr auf A1:A50 klicken :smile:

Gibt es danach noch einen Grund für EnableEvents?

Gruß
Reinhard

Hallo Thomas

Habe das Makro ins Workbook kopiert. Also das es gerade aktiv ist, sobald das Sheet geöffnet wird.
Es passiert aber nichts.

Gruss

Habe das Makro ins Workbook kopiert. Also das es gerade aktiv
ist, sobald das Sheet geöffnet wird.
Es passiert aber nichts.

Hallo Lanzma,

in das Modul „Diese Arbeitsmappe“ gehört die prozedur wenn sie für mehrere Blätter gelten soll, dzu müßte man aber die Prozedur leicht umschreiben.

Durch Umschreiben könnte sie auch da stehen bleiben für nur ein Blatt.

Verschiebe sie aber lieber in das Modul wo sie hingehört, in das Modul des Blattes.

Gruß
Reinhard

Hallo Reinhard

Kann man das auch in mit einer Schlaufe lösen, angenommen es kommen noch E,F etc. hinzu… kann es ziemlich lang werden.

Columns(„B“).Hidden = Target.Offset(0, 1).Value = „“
Columns(„C“).Hidden = Target.Offset(0, 2).Value = „“
Columns(„D“).Hidden = Target.Offset(0, 3).Value = „“

Gruss & Danke

Kann man das auch in mit einer Schlaufe lösen, angenommen es
kommen noch E,F etc. hinzu… kann es ziemlich lang werden.

Columns(„B“).Hidden = Target.Offset(0, 1).Value = „“
Columns(„C“).Hidden = Target.Offset(0, 2).Value = „“
Columns(„D“).Hidden = Target.Offset(0, 3).Value = „“

Hallo Lanzma,

ja,

Private Sub Worksheet\_SelectionChange(ByVal Target As Range)
Dim Spa As Long
Application.ScreenUpdating = False
Columns("B:smiley:").Hidden = False
If Target.Count 1 Then Exit Sub
If Not (Intersect(Target, Range("A1:A50")) Is Nothing) Then
 For Spa = 2 To 4
 Columns(Spa).Hidden = Target.Offset(0, Spa - 1).Value = ""
 Next Spa
End If
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard

Grüezi Reinhard

wenn schon so, dann
Set rngHide = Intersect(Target.EntireRow,Range(" B :smiley:"))
sonst ist Spalte A wech und man kann nie mehr auf A1:A50
klicken :smile:

Mitnichten (oder -neffen?) :wink:

In Spalte A steht ja immer was also wird sie nicht augeblendet; nimmt man nur B:smiley: wird nicht ausgeblendet wenn Spalte B leer ist.

…ich habs extra darum getestet…

…die Events schalten könnte man ev. noch weglassen - ist mehr so eine (gute) Gewohnheit.


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi Lanzma2

Habe das Makro ins Workbook kopiert. Also das es gerade aktiv
ist, sobald das Sheet geöffnet wird.
Es passiert aber nichts.

Du wolltest, dass das Ganze beim Auswählen in Spalte A reagiert - das Aktivieren des Tabellenblattes war bisher nicht das Kriterium.

…und wie Reinhard geschrieben hat, gehört der Code natütlich ins Codemodul des Tabellenblattes.

(Wo ist denn bei dir ‚ins Workbook kopiert‘ genau?)


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Funktioniert.

Danke

Jep.

Danke und wieder was gelernt

wurde super gelöst.

Gruss

danke. gelöst

Grüezi Meister, äh Thomas :smile:),

wenn schon so, dann
Set rngHide = Intersect(Target.EntireRow,Range(" B :smiley:"))
sonst ist Spalte A wech und man kann nie mehr auf A1:A50
klicken :smile:

Mitnichten (oder -neffen?) :wink:

Laut Grundgesetz muß das das Gleiche sein :smile:

In Spalte A steht ja immer was also wird sie nicht
augeblendet;

? wer sagt denn sowas, daß in A immer was steht.

nimmt man nur B:smiley: wird nicht ausgeblendet wenn
Spalte B leer ist.

Kann ich nicht nachvollziehen, bei mir wird B wenn Bx leer ist ausgeblendet.

Was bei dir noch fehlt, ist das Wiedereinblenden, wenn man in G3 klickt.

In diesem einen Fall würde ich dann doch glatt lieber meinen Code nehmen als deichen *lächel*

Angenommen, neues leeres Blatt, man klickt irgendwie in A1:A50, dann kommt 1004, keine Zellen gefunden.

(wegen dem und auch anderen Dingen vermeide ich Specialcells, falls möglich)

Andere Konstellation, neues leeres Blatt, nur in C2 steht etwas.
Dann klicke mal auf A2.

Danach versuche mal in Spalte A zu klicken :smile:)

…die Events schalten könnte man ev. noch weglassen - ist
mehr so eine (gute) Gewohnheit.

Da bin ich beruhigt, ich dachte schon im Code ist etwas versteckt was Selection_Change auslöst.

Gruß
Reinhard