Herbers Excel-Forum - das Archiv

Dynamisches Spalteneinblenden



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Dynamisches Spalteneinblenden
von: Margot


Geschrieben am: 20.05.2002 - 10:19:02

Eine weitere Hilfesuchende....

Folgende Aufgabenstellung bekomme ich (trotz vieler „effektiver Stunden“ Stöberns im Excel-Forum) nicht in den Griff:

- dynamisches Einblenden von Spalten innerhalb einer Gruppe von Arbeitsblättern in Abhängigkeit des aktuellen Berichtsmonats

Die Details hierzu:
Es existiert ein Workbook mit - aktuell – 15 Worksheets (= 15 Unternehmensfunktionen), in denen jeweils 14 Spalten vorbereitet, aber nur teilweise gefüllt sind:
- Spalte A: Endstand Vorjahr
- Spalten B – M : Endstände pro Monat des laufenden Berichtsjahres (monatsweise Datenaktualisierung per Import-Makro)
- Spalte N: Durchschnittswert für das laufende Berichtsjahr bis zum aktuellen Berichtsmonat („dynamische“ Ermittlung des anzuwendenden Divisors)

Mit einem VBA-Makro möchte ich erreichen, dass bei Anforderung einer Druckaus-gabe in allen (z.Zt.15) Blättern die Spalten A, die dem Berichtszeitraum entsprechen-den Monatsspalten (für den Bericht „Mai“ also B, C, D, E und F) sowie die Spalte N eingeblendet und gedruckt werden.

Für die Profis, die sich der Hilfeschreie annehmen doch sicher kein Problem!?! Auch ein Verweis auf bestehende Lösungen "hülfen" mir sicher sehr

Vielen Dank für eine(n) Lösung(sansatz) im Voraus!


Margot

nach oben   nach unten

Re: Dynamisches Spalteneinblenden
von: Klaus Schubert


Geschrieben am: 20.05.2002 - 15:53:48

Hallo Margot,

mal sehen, ob dieser Code in etwa deinen Vorstellungen entspricht.
Mit Alt + F11 in die VBA-Umgebung wechseln und dann in ein normales Modul folgenden Code kopieren:

Jetzt kannst du diesen Code als Makro "Eigene Druckausgabe" starten.
Probier ihn mal aus! Falls Fragen auftauchen oder etwas nicht wie gewünscht funktioniert, dann nochmal melden !

Gruß Klaus


nach oben   nach unten

Re: Dynamisches Spalteneinblenden
von: Margot


Geschrieben am: 20.05.2002 - 18:24:57

Hallo Klaus,
zunächst "herzlichen Dank" für Deine Mühe.
Dennoch komme ich auf das Angebot zurück und stelle "eine" ergänzende Frage.
"Meine" - jetzige (und glücklicherweise funktionierende)- Lösung - siehe die beiden Macros unten.

Allerdings ärgert mich daran weiterhin - und das ist die Kernfrage - dass es mir nicht gelingt, ein Array der zu bearbeitenden Tabellenblätter mit einer Schleifen-Abfrage zu bearbeiten. Die "Adress-Positionierung" bei meinen Versuchen bleibt immer auf der zuerst angegebenen Tabelle im Array.

Hast Du (oder jemand anders??) dafür eine Lösung

Nochmals - DANKE und schöne Reststunden des "Feiertags" Pfingstmontag - hoffentlich nicht nur mit EXCEL-Problemlösungen...

Margot

Sub Spalten_einblenden()

' in Abhängigkeit vom aktuellen Berichtsmonat werden nur die im Jahresablauf bereits gefüllten Monate eingeblendet

'und hier liegt das "Problem" --> die zu bearbeitenden Blätter müssen in dieser Lösung statisch einge"tippt" werden.
'Schöner (weniger wartungsaufwendig) wäre eine "Schleife" die alle in einer "Gruppe" ( Array von sheets ) definierten Blätter "automatisiert" abarbeitet.
'Das Workbook beinhaltet viel mehr als die hier zu bearbeitenden Worksheets.


Sheets("Jahr_Stamm_APE").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Befr_APE").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_aktive_APE").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Stamm_Koepfe").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Befr_Kopefe").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_aktive_Koepfe").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_FAK").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_AZUBI").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Tarif_40h").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_AT_40h ").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Tar_u_AT_40h ").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Mehr_40hTar").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_ATZ_ArbPh").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Mehrarb").Activate
Call Welche_Spalten_einblenden

Sheets("Jahr_Stamm_APE").Activate
Range("A1").Select

End Sub


Sub Welche_Spalten_einblenden()

' in Abhängigkeit vom letzten Berichtsmonat werden nur die bereits gefüllten Monate eingeblendet
' Im Blatt "Jahr_Durchschnitt" ist in Zelle "A1" der gültige Berichtsmonat - als Zahl (1 - 12) - eingetragen)
Dim Letzter_Monat As Integer
Letzter_Monat = Sheets("Jahr_Durchschnitt").Range("A1").Value

'Alle anderen zu bearbeitenden worksheet sind gleich strukturiert - deshalb der Wunsch nach Verarbeitung in einer (defi-nierten) Gruppe:
'in Spalte 7 ("G") steht in den zu verarbeitenden Sheets der Vorjahres-Vergleichswert
'ab Spalte 8 ("H") sind die aktuellen Monatswerte eingetragen
'in Spalte 20 ("T") steht der - in Abhängigkeit von den im lfd. Jahr vergangenen Monate - Durchschnitt des aktuellen Jahres bis Berichtsmonat
'Spalte 27 ("AA") ist als Trennspalte zwischen Ist und Delta gedacht - "Leerspalte"
'Ab Spalte 28 werden die monatlichen Abweichungen vom Vorjahresendwert errechnet (Jan - Dez(Vorjahr), Feb - Dez(Vorjahr) ...)

'erst einmal alles ausblenden
Range(Columns(8), Columns(42)).Select
Selection.EntireColumn.Hidden = True

' nun die dem Berichtsmonat entsprechende Anzahl Spalten wieder einblenden
Range(Columns(8), Columns(7 + Letzter_Monat)).Select
Selection.EntireColumn.Hidden = False

'die Spalte mit den Durchschnittswerten immer einblenden
Columns(20).Select
Selection.EntireColumn.Hidden = False

'die Leerspalte + die dem Berichtsmonat entsprechenden Deltaspalten für die Monate bis Berichtsmonat einblenden
Range(Columns(27), Columns(27 + Letzter_Monat)).Select
Selection.EntireColumn.Hidden = False

End Sub

nach oben   nach unten

Re: Dynamisches Spalteneinblenden
von: Klaus Schubert


Geschrieben am: 20.05.2002 - 22:21:40

Hallo Margot,

stellt sich zuerst mal die Frage , welche Kriterien muss ein Blatt denn erfüllen, damit es abgearbeitet werden soll, haben diese Blätter bestimmte Eigenschaften oder wonach wählst du diese aus? (oder hab ich was übersehen?)

Gruß Klaus


 nach oben

Excel-Beispiele zum Thema "Dynamisches Spalteneinblenden "
Dynamisches Diagramm