Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ausblenden von Spalte bei Bedingung

Ausblenden von Spalte bei Bedingung
21.10.2019 09:39:51
Spalte
Hallo Forengemeinde,
ich habe in diesem Forum schon viele nützliche Tipps und Lösungen finden können, stets auch immer ohne nachfragen. Leider stehe ich gerade vor einem Problem das ich trotz intensiver Foren Recherche nicht in den Griff bekomme.
Ich bastele gerade an einem ewigen Kalender in einer Tabelle. Zur Erfassung von Schaltjahren habe ich mir folgendes überlegt. Der Kalender passt sich selbst an nach einmaliger Eingabe der Jahreszahl im Kopf des Arbeitsblattes. Im Februar ist eine Spalte für den 29. vorgesehen (BR) die in einem "normalen" Jahr allerdings den 1. März ausgibt (in Zelle BR-9). In einer Zelle darüber (BR-7) findet eine Abfrage statt, die wenn das Feld für den 29.02 (BR-9) und das für den 01.03 (BS-9) gleich sind "wahr" oder eben 1 ausgibt.
Jetzt möchte ich das immer wenn in BR-7 "1" ausgegeben wird die Spalte "BR" ausgeblendet wird. Dazu habe ich im Foren Archiv ein VBA Makro gefunden und mit meinen Werten angepasst.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("BR7") Then
Select Case Target.Value
Case Is = 1
Worksheets("1. Halbjahr").Columns("BR").Hidden = True
Case Is = 0
Worksheets("1. Halbjahr").Columns("BR").Hidden = False
End Select
End If
End Sub

Leider funktioniert es aber nicht. Wenn ich das Makro über den VBA Editor starten will ist die Liste der verfügbaren Makros leer. Der Beitrag aus dem der Code stammt ist allerdings aus dem Jahr 2009.
Liegt es hier an einem Fehler im Code oder am alter des Beitrages.
Danke im Vorraus
Mfg Balou87
Hier der DropBox Link zu meiner Datei
https://www.dropbox.com/s/fs28ou6lxup8q4b/BiPla.xlsm?dl=0
Der Beitrag aus 2009:
https://www.herber.de/forum/archiv/1092to1096/1093160_Ausblenden_von_Spalten_wenn_Bedingung_erfuellt.html

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausblenden von Spalte bei Bedingung
21.10.2019 10:12:01
Spalte
Hallo,
Der Code wird bei jeder Änderung im Worksheet automatisch ausgeführt! Das liegt an dieser Zeile:
Private Sub Worksheet_Change(ByVal Target As Range)
Da es ein "automatisches" Makro ist, erscheint es auch nicht in deiner Liste der Makros.
Schreibe stattdessen
Sub Schaltjahr()
Select Range("BR7").value
Case Is = 1
Worksheets("1. Halbjahr").Columns("BR").Hidden = True
Case Is = 0
Worksheets("1. Halbjahr").Columns("BR").Hidden = False
End Select
End If
End Sub

Das kannst du dann ganz normal aus deiner Makroliste auswählen.
Grüße,
Klaus M.
Anzeige
AW: Ausblenden von Spalte bei Bedingung
21.10.2019 10:16:39
Spalte
Hallo,
dein Code stimmt. Er reagiert auf Änderung innerhalb der Tabelle (Worksheet_Change)
Du musst das Makro nicht händisch ausführen, sondern lediglich in Zelle BR7 1 bzw. 0 schreiben, dann passiert genau das, was du willst.
Ich würde dir aber einen Vorschlag machen: Nehme eine andere Zelle als Bezug, da du die ausblendete nicht mehr direkt ansprechen kannst, sobald diese via Makro ausgeblendet wurde.
Gruß Pierre
AW: Ausblenden von Spalte bei Bedingung
21.10.2019 10:34:38
Spalte
Hallo,
das ist ein Event-Makro. Das Makro gehört ins Codemodul des Arbeitsblattes, auf dem es sich auswirken soll. Es muss nicht extra gestartet werden, es wird abgearbeitet wenn das entsprechende Event eintritt.
Allerdings würde das hier mit dem Change-Event nicht funktionieren. Die Zelle BR7 ist das Ergebnis einer Formelberechnung und das Change-Event reagiert auf Formelberechnungen nicht, sondern nur auf eine "händische" Eingabe.
Ich würde die Zelle überwachen, in der du die Jahreszahl eingibst.
Annahme die Jahreszahl wird in Zelle B2 eingegeben.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "B2" Then
Columns("BR").Hidden = Range("BR7") = 1
End If
End Sub
Gruß Werner
Anzeige
AW: Ausblenden von Spalte bei Bedingung
21.10.2019 14:38:00
Spalte
Zuerst danke für die Rege Beteiligung...
Mein Problem lag darin das ich nicht wusste, dass die Event-Makros nicht auf durch Formeln entstandene Werte reagieren. Daher hat das Makro nichts ausgerichtet wodurch ich davon ausging das der Code falsch ist... Ebenfalls habe ich die Bezugszelle verändert in der 0/1 erzeugt wird (jetzt B9). Mit dem Makro und händischer Eingabe klappt alles wunderbar, aber ich würde gerne um die händische Eingabe herum kommen.
@Werner:
Leider klappt es mit deinem Code auch noch nicht...
Was genau meinst du mit Jahreszahl in Zelle B2? Z.Zt. Wird in meiner Tabelle in B5 die Jahreszahl eingegeben im Format JJJJ. Dann erzeugt eine Formel
(=WENN((REST(B5;4)=0)-(REST(B5;100)=0)+(REST(B5;400)=0)=0;"1";"0")

in Zelle B9 eine Ausgabe "0" oder "1" (kein Schaltjahr / Schaltjahr) darauf sollte dann die Spalte BR (29.02) ausgeblendet werden (wenn B9 = 1 bzw. wahr)
Danke im Voraus und noch einen schönen Nachmittag...
MfG Balou87
Anzeige
AW: Ausblenden von Spalte bei Bedingung
21.10.2019 22:07:58
Spalte
Hallo,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "B5" Then
Columns("BR").Hidden = Range("B9") = 1
End If
End Sub

Und dann ändere mal deine Formel. Mit den Gänsefüsschen trägst du Text in die Zelle ein und keine Zahl.
=WENN((REST(B5;4)=0)-(REST(B5;100)=0)+(REST(B5;400)=0)=0;1;0)
Gruß Werner
AW: Ausblenden von Spalte bei Bedingung
22.10.2019 08:15:46
Spalte
Super jetzt klappt alles wie gewünscht.
Vielen, vielen Dank!
MfG Balou87
Gerne u. Danke für die Rückmeldung. o.w.T.
22.10.2019 08:39:08
Werner

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige