Anzeige
Archiv - Navigation
1404to1408
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

Aus einer Selektion von Zellen eine

Aus einer Selektion von Zellen eine
29.01.2015 09:39:30
Zellen
hallo!
ich kenne mich zwar ganz in excel aus, aber für dieses problem benötige ich VBA, aber davon habe ich nicht viel ahnung.
es geht um folgendes. aus einer zeiterfassungs liste wo es spalten gibt wie datum, arbeitsort, typ (krank, urlaub, feiertag) soll aus einer selektion (ganzer monat) per makro ein ausgabefile erstellt werden.
in diesem ausgabefile das ein bestimmtes (kein komplexes) format hat sollen
1.) alle wochenenden rausgenommen werden
2.) abhängig vom arbeitsort bzw der spalte typ ein text eingefügt werden.
3.) abhängig vom datum soll die überschrift bzw eine unterschriftszeile erstellt werden.
anbei ein bild wo man links die ausgangstabelle sieht und rechts das gewünschte ergebnis (das bisher händisch erstellt wurde).
die idee ist jetzt, dass man in der zeiterfassungstabelle den aktuellen monat markiert, und dann ein makro startet.
dieses makro erstellt ein neues file mit einem dateinamen abhängig vom monat (in den selektierten zellen).
es wird eine überschrift generiert wo ebenfalls der monat der selektion verwendet wird
aus der selektion werden nun zeilenweise die daten bearbeitet und in das neue file zeilenweise eingetragen.
wenn arbeitsort A dann text A, wenn arbeitsort B dann text B usw. in die rechte spalte der neuen datei
wenn typ F dann feiertag, wenn typ K dann krank, wenn typ U dann urlaub
am ende wird noch eine unterschrifts zeile generiert wo als datum der erste tag vom nächsten monat steht, also letzter tag der selektion+1.
wie gehe ich das an?
also das format der ausgabedatei habe ich mittlerweile mit einem makro erstellt.
ich stell mir die weitere vorgehensweise so vor, kann es aber nicht coden:
1.) jetzt müsste ich aus der selection bestimmen wieviele zeilen diese selektion hat (n)
2.) mit der anzahl wird dann eine schleife gemacht welche die zeilen der selection (i=1 bis n) durchgeht und dort erst mal das monat+jahr des ersten tages der selection abgreift. dies benötige ich noch in der überschrift und für den dateinamen (tabelle gilt für monat/jahr)
3.) nun soll innerhalb dieser schleife die daten der selektion in die ausgabedatei geschrieben werden:
Zelle:
Ai: laufende nummer (schleifen index variable i)
Bi: falls kein wochenende (also falls wochentag von datum i Ci: abhängig von typ und arbeitsort JA oder NEIN eintragen mit folgenden bedingungen
typ=F oder U oder K (feiertag, urlaub, krank): NEIN
typ=leer (also "") und arbeitsort BB oder ISM: JA
typ=leer (also "") und arbeitsort irgendwas anderes (also else): NEIN
diese JA/NEIN entscheidung habe ich aber auch schon in der selektion, könnte die also ebenfalls übernehmen, ich benötige die unterscheidung dann aber in der nächsten spalte wo der erklärende text reinkommt.
Di: wo war ich an dem tag?: eintragen von F: feiertag, K: krank, u: urlaub
bzw. vom arbeitsort: BB: Böblingen, ISM: ismaning, ...
4.) i=i+1 => wieder nach 3.)
5.) wenn fertig dann noch unterschriftsfeld mit letztem datum der selektion+1 versehen
6.) datei speichern mit monat aus der selektion im dateinamen. das habe ich zum teil auch schon mit dem makro aufgezeichnet.
anbei ein link zu einem bild - hoffe das klappt.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Beispieldatei
29.01.2015 10:06:40
KlausF
Hallo MarioK,
1. ist kein Bild anbei und 2. wird Dir hier kaum jemand helfen
ohne eine Beispieldatei mit exakt gleicher Datenstruktur.
Benutze dazu den File-Upload dieses Forums.
Gruß
Klaus

AW: Beispieldatei
29.01.2015 10:14:02
MarioK
Userbild

AW: Beispieldatei
29.01.2015 10:19:55
MarioK
ist etwas gewöhnungsbedürftig die forum SW?
nun sollte sowohl bild als auch beispiel datei mit vorher, nachher format da sein.
jetzt kommt noch das VBA makro, das ich aufgezeichnet habe:

Sub Ausgabedatei_vorbereiten()
' Ausgabedatei_vorbereiten Makro
'Spaltenbreiten festlegen
Workbooks.Add
Columns("A:A").Select
Selection.ColumnWidth = 6
Columns("B:B").Select
Selection.ColumnWidth = 13
Columns("C:C").Select
Selection.ColumnWidth = 40
Columns("D:D").Select
Selection.ColumnWidth = 45
' Überschrift festlegen
Range("A2:D2").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge
Selection.Font.Bold = True
Range("A2:D2").Select
ActiveCell.FormulaR1C1 = "Anlage bzgl. Versteuerung Fahrten Wohnung/Arbeitsstätte"
Range("A2:D2").Select
Selection.Font.Size = 14
'Name eintragen
Range("B5").Select
ActiveCell.FormulaR1C1 = "Mario Kalanja"
Range("B5").Select
Selection.Font.Bold = True
With Selection
.HorizontalAlignment = xlRight
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
'Monat eintragen und formatieren
Range("C5").Select
ActiveCell.FormulaR1C1 = "MONAT"
Range("C5").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Font.Bold = True
'Jahr eintragen und formatieren
Range("D5").Select
ActiveCell.FormulaR1C1 = "JAHR"
Range("D5").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Font.Bold = True
'Tabellenkopfspalten beschriften
Range("A8").Select
ActiveCell.FormulaR1C1 = "No."
Range("B8").Select
ActiveCell.FormulaR1C1 = "Datum"
Range("A8:B8").Select
Selection.Font.Bold = True
Range("C8").Select
ActiveCell.FormulaR1C1 = _
"Wurde die arbeitsvertragliche fixierte Arbeitsstätte (Böblingen oder Ismaning) an  _
diesem Datum angefahren?"
Range("C8").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D8").Select
ActiveCell.FormulaR1C1 = "Wo waren sie an diesem Tag eingesetzt"
Range("C9").Select
ActiveCell.FormulaR1C1 = "JA oder NEIN"
Range("C9").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Range("D9").Select
ActiveCell.FormulaR1C1 = "kurze Angabe, wo an diesem Tag aufgehalten"
Range("D9").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
'Rahmenlinien für Tabelle erstellen
Range("A8:D35").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
'hier fehlt nun die schleife mit der auswertung der selection
'Unterschriftsbereich erstellen
Range("B39").Select
ActiveCell.FormulaR1C1 = _
"Hiermit bestätige ich die Richtigkeit der oben genannten Angaben"
Range("B42").Select
ActiveCell.FormulaR1C1 = "1/30/2015"
Range("B43").Select
ActiveCell.FormulaR1C1 = "Datum"
Range("C43").Select
ActiveCell.FormulaR1C1 = "Unterschrift"
Range("B43:C43").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
Selection.Borders(xlEdgeLeft).LineStyle = xlNone
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Selection.Borders(xlEdgeBottom).LineStyle = xlNone
Selection.Borders(xlEdgeRight).LineStyle = xlNone
Selection.Borders(xlInsideVertical).LineStyle = xlNone
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Range("D37").Select
'Datei speichern im richtigen Verzeichnis
ChDir "C:\_Daten\_Piterion\Auto\Fahrten Wohnung Arbeitsstätte"
ActiveWorkbook.SaveAs Filename:= _
"C:\_Daten\_Piterion\Auto\Fahrten Wohnung Arbeitsstätte\01 - Fahrten Wohnung Arbeitsstä _
tte - Kalanja -  2015.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

Anzeige
AW: Beispieldatei
29.01.2015 16:25:34
MarioK
nach weiteren makro aufzeichnen und viel googlen und herumprobieren hab ich es hinbekommen.
thema könnte geschlossen bzw gelöscht werden ebenso wie meine files

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige