Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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

Excel-Bericht aus Daten erstellen

Excel-Bericht aus Daten erstellen
Martin
Hallo liebe Spezis,
in der hochgeladenen Datei
https://www.herber.de/bbs/user/68908.zip
habe ich in der Tabelle 1 ein Formular, welches so bzw. so ähnlich aussehen soll und in Tabelle 2 die Daten, die in den Bericht je Mitarbeiter eingetragen werden sollen, d.h. es soll nach der Eingabe eines Zeitraums für jeden Mitarbeiter ein solcher Bericht entstehen (Beispiel: vom 01.03.2010 bis 15.03.2010 alle Daten je Mitarbeiter auf jeweils ein Berichtsblatt)
In der Tabelle 1 habe ich auch eingetragen, in welchen Spalten die Daten stehen sollen.
Es wäre prima, wenn mir jemand bei dem Vorhaben helfen könnte.
Vielen Dank!
Gruß
MARTIN

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel-Bericht aus Daten erstellen
13.04.2010 15:26:12
fcs
Hallo Martin,
das sprengt fast ein wenig den Rahmen für Hilfe via Forum.
Folgende Empfehlungen:
1. Vereinfache dein Formular in soweit, dass du das feste Wochentagsschema 5 mal Mo bis Sa wegläßt und die Reisen "einfach" untereinander auflistest.
2. Nimm die eindeutige Personalnummer mit ins Formular auf. Diese ist dann auch die Referenz für die Übernahme der Informationen vom Blatt Daten ins Formular.
Nachfolgend ein Makro, dass die relevanten Daten erst in eine daten-Array einliest und anschliessend je PersonalNr ins Formular überträgt und druckt (im Moment) nur die Seitenvorschau (Papier sparen). Die Formatierungen im Formular muss du z.T. noch anpassen, Die Ergebnissummenformeln ergänzen.
Gruß
Franz
Option Explicit
Private wksData As Worksheet, wksForm As Worksheet
Private arrData()
Sub Formular()
Set wksData = Worksheets("Daten")
Set wksForm = Worksheets("Formular")
If DatenEinlesen > 0 Then
Call Daten_ins_Formular
MsgBox "Ffertig!"
Else
MsgBox "Keine Daten für den Zeitraum gefunden"
End If
End Sub
Private Function DatenEinlesen() As Long
Dim lZeile As Long, iArr As Long, dDatumVon As Date, dDatumBis As Date
'Datensätze einlesen, die innerhalb des Datumbereichs liegen
dDatumVon = wksForm.Range("G1")
dDatumBis = wksForm.Range("H1")
iArr = 0
With wksData
For lZeile = 3 To .Cells(.Rows.Count, 2).End(xlUp).Row
If .Cells(lZeile, 2) >= dDatumVon And .Cells(lZeile, 2) 

Anzeige
AW: Excel-Bericht aus Daten erstellen
14.04.2010 13:56:38
Martin
Hallo Franz,
vielen, vielen Dank für dieses Makro, ich fange gleich an zu "basteln" und melde mich sobald alles funktioniert.
Vielen dank nochmal!
Gruß
MARTIN
AW: Excel-Bericht aus Daten erstellen
19.04.2010 12:11:30
Martin
Hallo Franz,
das ist ja klasse, was Du da gezaubert hast. Meine Hochachtung!
Man lernt eben immer ein Stückchen mehr dazu. Es scheint auch zu funktionieren und ich habe einige Anpassungen vorgenommen. Nun habe ich noch ein paar Fragen:
Durch Anpassungen müssten die Daten aus anderen Spalten bzw. in andere Spalten eingefügt werden, in Deinem Makro finde ich jedoch nicht die herkömmlichen Bezugsadressen der Spalten, wie gehe ich hier vor?
Die Summe der Daten aus Spalte "X" müsste ich im Formular unter H41 eintragen, da es keine Spalte hierfür gibt, würde ich einfach eine weitere Spalte im Formular anhängen und ausblenden (müsste diese Spalte dann auch als Löschbereich definieren). Wäre diese Vorgehensweise Deiner Meinung nach korrekt?
Kann ich das Formular auch als separate Datei führen, so dass ich "nur" das Formular öffnen muss und die Daten-Datei nicht aktiv geöffnet werden muss?
Was bewirkt Dein Befehl "Next arrData(13, iArr2) = True 'Datensatz als gedruckt gekennzeichnen"? Ich konnte keine Kennzeichnung finden.
Vielen lieben Dank für Deine tolle Unterstützung!
Gruß
MARTIN
https://www.herber.de/bbs/user/69148.zip
Anzeige
AW: Excel-Bericht aus Daten erstellen
19.04.2010 16:06:15
fcs
Hallo Martin,
Durch Anpassungen müssten die Daten aus anderen Spalten bzw. in andere Spalten eingefügt werden, in Deinem Makro finde ich jedoch nicht die herkömmlichen Bezugsadressen der Spalten, wie gehe ich hier vor?
Da wesentlich einfacher zu programmieren, verwende ich unter VBA fast immer Cells(Zeile, Spalte) für das Lesen und Schreiben von Daten aus/in Tabellen. Zeile entspricht dabei der Nummer wie sie links in Excel angezeigt wird, Spalte der fortlaufende Nummer der Spalte, wobei A=1, B=2 .. Z=26, AA=27 usw.
Man kann in Excel auch die Darstellung in die Z1S1-Schreibweise umschalten unter Extras-Optionen-Allgemein. Das ist dann hilfreich, wenn man unter VBA die Spaltennummern benötigt und nicht das Alphabet durchzählen möchte
Die Summe der Daten aus Spalte "X" müsste ich im Formular unter H41 eintragen, da es keine Spalte hierfür gibt, würde ich einfach eine weitere Spalte im Formular anhängen und ausblenden (müsste diese Spalte dann auch als Löschbereich definieren). Wäre diese Vorgehensweise Deiner Meinung nach korrekt? Ausblenden ist nicht nötig, wenn du im Blatt Formular einen Druckbereich festlegst. Das Array zum Einlesen muss dann um eine Spalte erweitert werden.
Alternativ könnte man diese Summe auch vom Makro berechnen und eintragen lassen. (ist in der Datei ausser dem Eintragen schon so drin.)
Kann ich das Formular auch als separate Datei führen, so dass ich "nur" das Formular öffnen muss und die Daten-Datei nicht aktiv geöffnet werden muss?
Die Trennung von Daten-Datei und Formular-Datei ist möglich. Die Daten-Datei muss aber zum Einlesen der Daten kurzzeitig geöffnet werden. Ist in der Datei schon umgesetzt. Das Makro fragt nach dem Start nach dem Dateinamen, wenn die Datendatei immer die gleiche ist, dann kannst du den Namen auch fest im Makro verankern. Nach dem Einlesen der Daten wird die DatenDatei sofort wieder geschlossen, bevor der Ausdruck der Daten beginnt.
Was bewirkt Dein Befehl "Next arrData(13, iArr2) = True 'Datensatz als gedruckt gekennzeichnen"? Ich konnte keine Kennzeichnung finden.
arrData(13, iArr2) = True
arrData ist ein Daten-Array, das nur während der Makroausführung im Arbeitsspeicher von Excel existiert. Es werden keine Daten in Tabellen geschrieben. Das Array wird beim Einlesen angelegt und mit Daten gefüllt. Beim Drucken werden diese Daten ausgewertet (Nach PersNr) und ins Formular geschrieben.
Wird eine Datenspalte des Arrays ins Formular geschrieben, dann wird in Zeile 13 des Arrays als Merker der Wert False mit True überschrieben. In der äußeren For-Next-Schleife wird für jede Zeile immer erst geprüft, ob die Spalte schon in einem der vorherigen Formulare ausgedruckt wurde, bevor die Daten für die nächste PersNr. zusammengestellt werden.
Gruß
Franz
Hier die aktualisierte Formulardatei ohne Blatt Daten
https://www.herber.de/bbs/user/69156.xls
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige