Die Analyse und Auswertung von Tabellen sowie das Erstellen von Berichten ist u.a. eine der häufigsten Arbeiten im Controlling. Hierfür werden in der Regel große Datenmengen nach MS Excel importiert. Die Analyse und optische Aufbereitung dieser Daten ist eine der Aufgaben eines Controllers. Zur optischen Aufbereitung der Daten gehört auch die Anpassung der Tabellen an das gewünschte Seitenformat. Dieser Arbeitsschritt kann vor allem bei großen Datenmengen zu einem erheblichen Zeitaufwand führen. Daher soll in diesem MS Excel-Tipp ein Makro vorgestellt werden, dass die Bearbeitungszeit hierbei reduziert.
Aufgrund der hohen Individualität von Tabellen, ist es nur möglich in diesem Tipp eine grundlegende Erläuterung zum Aufbau des Makros zu geben. Als Ausgangssituation soll eine Vertriebstabelle angepasst werden. Der Aufbau der Tabelle ist in der folgenden Abbildung zu sehen. Das Ziel des Controllers ist die Anpassung der Tabelle auf eine Seitenbreite und die Festlegung eines Druckbereiches.
Abbildung 1 Grundtabelle
In diesem Beispiel sollen alle Datensätze gedruckt werden, wodurch die Bestimmung der Startzelle entfällt und auf A1 festgesetzt wird. Es besteht natürlich auch die Möglichkeit diese Zelle durch Formeln individuell zu bestimmen.
Das hier beschriebene Makro wird daher nur die Position der letzten Zelle bestimmen und somit den Druckbereich entsprechend festlegen. Hierfür werden die beschriebenen Zeilen der ersten Spalte gezählt. Im Anschluss werden analog dazu die Spalten der ersten Zeile gezählt. Dieses Verfahren funktioniert, da in dieser Tabelle keine leeren Zellen innerhalb der Datentabelle vorliegen.
Anzeige
Bleiben Sie auf dem Laufenden! Mit unseren Social-Media-Kanälen auf LinkedIn, Facebook und Instagram werden Sie über neue Beiträge, Excel-Tools und aktuelle Stellenangebote informiert. Folgen Sie uns! LinkedIn >> Facebook >> Instagram >>
1. Schritt: Anlegen eine Schaltfläche um das Makro starten zu können
Im ersten Schritt wird eine Schaltfläche eingefügt, mit dieser wird später das Makro aktiviert. Der eigentliche Code kann hierbei direkt in die Schaltfläche mit dem VBA-Editor geschrieben werden oder als separates Modul gespeichert und über einen Abrufbefehl aktiviert werden.
Wenn in der Exceldatei verschiedene Tabellenblätter auf diese Weise angepasst werden sollen, so empfiehlt sich das Makro als Modul zu erstellen. In diesem Beispiel wird dies aber nicht benötigt, da hier nur ein Tabellenblatt angepasst werden soll. Eine Beschreibung wie die Schaltfläche erstellt wird, erhalten Sie im
Excel-Tipp Steuerelemente anwenden, daher wird hier auf eine Beschreibung verzichtet.
Abb. 2 Tab mit Button
2. Schritt: Das Makro erstellen
Um ein Makro selber zu schreiben, muss der in Excel integrierte Makroeditor geöffnet werden. Benutzer von MS Excel 2007 müssen evtl. hierfür erst die Registerkarte Entwickler-Tools einblenden. Hierfür wird in MS Excel 2007 die Office-Schaltfläche geöffnet und dort das Menü „Excel-Optionen“ gewählt. Dort wird im Bereich „Häufig verwendet“ ein Häkchen bei „Entwicklerregisterkarte in der Multifunktionsleiste anzeigen“ gesetzt.
Starten Sie als Nächstes den Entwurfsmodus von MS Excel. Danach öffnen Sie mit Hilfe eines Rechtsklicks auf die eingefügte Schaltfläche den Menüeintrag „Code anzeigen“. Durch dieses Vorgehen erstellt MS Excel automatisch die Grunddaten für das Makro.
3. Schritt: Definition der Variablen
Als Erstes müssen im Makro die benötigten Variablen definiert werden. In diesem Beispiel werden zwei Variablen benötigt um die Position der letzten Zelle zu bestimmen. Die erste Variable ermittelt die Anzahl an beschriebenen Zeilen und somit die Position des letzten Eintrags. Daher erhält Sie die Bezeichnung „AnzahlEinträgeZeilen“. Die andere Variable ermittelt die Anzahl an Spalten und wird als „AnzahlEinträgeSpalten“ bezeichnet.
Beide Variablen benötigen eine Definition, die angibt welche Art von Wert Sie enthalten. In diesem Beispiel sind beide Variablen als Integer definiert. Der Wert für Integer liegt in einen fest definierten Wertebereich. Wird dieser überschritten kommt es zu Fehlern und eine andere Definition für die Variablen muss gewählt werden.
Code:
Dim AnzahlEinträgeZeilen As Integer
Dim AnzahlEinträgeSpalten As Integer
4. Schritt: Die Formeln für die Variablen
Nachdem die Variablen definiert worden sind, müssen im nächsten Schritt die Werte für die Variablen ermittelt werden. Da es in diesem Beispiel keine Lücken in der Datentabelle gibt, wird hierfür die Arbeitsblattfunktion Anzahl2 verwendet. In VBA gibt es hierbei die Besonderheit, dass die Funktion mit ihrem Originalnamen verwendet wird.
Anzahl2 = CountA
Code:
AnzahlEinträgeZeilen = WorksheetFunction.CountA(Sheets("Vertriebstabelle").Range("A:A"))
AnzahlEinträgeSpalten = WorksheetFunction.CountA(Sheets("Vertriebstabelle").Range("1:1"))
In diesem Code wird für die Anzahl der Zeilen die Spalte A der Vertriebstabelle gezählt und für die Spalten werden die Einträge der Zeile 1 gezählt.
5. Schritt: Seiteneigenschaften festlegen
Im nächsten Schritt erfolgt die eigentliche Seiteneinrichtung. Hierbei folgt als Erstes die Definition der Blattausrichtung. Hierbei kann zwischen Hoch- und Querformat gewählt werden. In diesem Tipp wurde das Hochformat definiert.
Als Nächste wird der Druckbereich definiert. Dieser soll von der Zelle A1 bis zur letzten rechten unteren Zelle definiert werden. Hierfür wird in VBA ein Bereich (Range) festgelegt, der von der ersten Zelle (Cells(1,1)) bis zur letzten Zelle geht. Die letzte Zelle wird hierbei durch die beiden zuvor definierten Variablen bestimmt (Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).
Im Anschluss wird das Seitenlayout definiert. In diesem Beispiel soll die Breite der Tabelle auf eine Seite begrenzt sein und beliebig viele Seiten nach unten haben.
Als Letztes soll in der rechten Fußnote die Seitennummer stehen. Hierfür wird die undefinierte Variable „anzseiten“ eingefügt, welche mit einem Befehl die Seitenanzahl automatisch ermittelt und dann an die Fußnote übergibt.
Code:
With ActiveSheet.PageSetup
'Festlegung auf Hochformat
.Orientation = xlPortrait
'Druckbereich definieren
.PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address
'Seitenbreite definieren
.FitToPagesWide = 1
'Seitenhöhe definieren
.FitToPagesTall = False
'Seitenanzahl bestimmen
anzseiten = ExecuteExcel4Macro("Get.Document(50)")
'Rechte Fußnote mit Seitenanzahl belegen
.RightFooter = anzseiten
End With
Der VBA-Editor kann jetzt geschlossen werden und der Entwicklermodus kann beendet werden. Durch einen Klick auf die Schaltfläche wird jetzt automatisch die Seite eingerichtet.
Code für das vollständige Makro:
Private Sub CommandButton1_Click()
Dim AnzahlEinträgeZeilen As Integer
Dim AnzahlEinträgeSpalten As Integer
AnzahlEinträgeZeilen = WorksheetFunction.CountA(Sheets("Vertriebstabelle").Range("A:A"))
AnzahlEinträgeSpalten = WorksheetFunction.CountA(Sheets("Vertriebstabelle").Range("1:1"))
With ActiveSheet.PageSetup
'Festlegung auf Hochformat
.Orientation = xlPortrait
'Druckbereich definieren
.PrintArea = _
Range(Cells(1, 1), Cells(AnzahlEinträgeZeilen, AnzahlEinträgeSpalten)).Address
'Seitenbreite definieren
.FitToPagesWide = 1
'Seitenhöhe definieren
.FitToPagesTall = False
'Seitenanzahl bestimmen
anzseiten = ExecuteExcel4Macro("Get.Document(50)")
'Rechte Fußnote mit Seitenanzahl belegen
.RightFooter = anzseiten
End With
End Sub
Hierbei handelt es sich nur um ein Beispiel, welches die Grundfunktion des Makros erläutern soll. Anpassungen an die eigene Situation sind natürlich möglich. Die Beispieldatei Makro-Seite-Einrichten können
Sie hier herunterladen >>
letzte Änderung Alexander Wildt
am 16.08.2024
|
Autor:in
Bleiben Sie auf dem Laufenden mit unserem Newsletter
Tragen Sie sich für den
kostenfreien und unverbindlichen
Newsletter von Controlling-Portal.de ein und erhalten Sie jeden Monat aktuelle Neuigkeiten für Controller. Wir informieren Sie über neue Fachartikel, über wichtige News, aktuelle Stellenangebote, interessante Tagungen und Seminare. Wir empfehlen Ihnen spannende Bücher und geben Ihnen nützliche Excel-Tipps. Verpassen Sie nie mehr wichtige Diskussionen im Forum und stöbern Sie in Software-Angeboten, die Ihnen den Arbeitsalltag erleichtern.
Beispiel-Newsletter >>
Jetzt Newsletter gratis erhalten
Eigenen Fachbeitrag veröffentlichen?
Sie sind Autor einer Fachpublikation oder Entwickler einer Excel-Vorlage? Gern können Sie sich an der Gestaltung der Inhalte unserer Fachportale beteiligen! Wir bieten die Möglichkeit Ihre Fachpublikation (Fachbeitrag, eBook, Diplomarbeit, Checkliste, Studie, Berichtsvorlage ...) bzw. Excel-Vorlage auf unseren Fachportalen zu veröffentlichen bzw. ggf. auch zu vermarkten.
Mehr Infos >>