VBA Tabelle formatieren
Hallo an alle,
ich bin recht neu in VBA und soll jetzt für mein Unternehmen ein Makro erstellen, mit dem eine Tabelle automatisch formatiert wird.
Ich habe Bilder der Tabelle vorher und "nachher" mal angehangen
Die Idee ist:
Neben der Personalnummer in Spalte A stehen in den folgenden Spalten die Gehälter/Zuschläge samt Datum ab wann es in Kraft trat.
Die Tabelle soll für die Personalnummern nicht zeilenweise sondern untereinander formatiert werden. Wie auf dem Bild der fertigen Tabelle zu sehen.
Zu einigen Personalnummern gibt es eine Änderung im Gehalt, zu anderen 2, 3 oder 8.. es ist also variabel wie viele Zellen unter einander kopiert werden sollen.
Ich habe es mit einer If then else Schleife versucht, für jede Zeile einzeln. Aber das macht irgendwie nicht ganz was es soll und da ich noch keine Erfahrung habe, komme ich nicht dahinter wo das Problem liegt.
Kann mir da jemand helfen, mir einen Weg zeigen wie ich das formatieren kann?
Oder auch nur ein "Tipp" mit welchen Befehlen es besser/leichter wäre statt mit if wäre für mich schon hilfreich.
Falls ich etwas zu schlecht erklärt habe oder einen falschen Tag benutzt habe , verzeiht mir bitte, es ist mein erster Post hier im Forum.
Ich danke schon einmal für jedwede Hilfe!
Schöne Grüße
ich bin recht neu in VBA und soll jetzt für mein Unternehmen ein Makro erstellen, mit dem eine Tabelle automatisch formatiert wird.
Ich habe Bilder der Tabelle vorher und "nachher" mal angehangen
Die Idee ist:
Neben der Personalnummer in Spalte A stehen in den folgenden Spalten die Gehälter/Zuschläge samt Datum ab wann es in Kraft trat.
Die Tabelle soll für die Personalnummern nicht zeilenweise sondern untereinander formatiert werden. Wie auf dem Bild der fertigen Tabelle zu sehen.
Zu einigen Personalnummern gibt es eine Änderung im Gehalt, zu anderen 2, 3 oder 8.. es ist also variabel wie viele Zellen unter einander kopiert werden sollen.
Ich habe es mit einer If then else Schleife versucht, für jede Zeile einzeln. Aber das macht irgendwie nicht ganz was es soll und da ich noch keine Erfahrung habe, komme ich nicht dahinter wo das Problem liegt.
Kann mir da jemand helfen, mir einen Weg zeigen wie ich das formatieren kann?
Oder auch nur ein "Tipp" mit welchen Befehlen es besser/leichter wäre statt mit if wäre für mich schon hilfreich.
Falls ich etwas zu schlecht erklärt habe oder einen falschen Tag benutzt habe , verzeiht mir bitte, es ist mein erster Post hier im Forum.
Ich danke schon einmal für jedwede Hilfe!
Schöne Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4628609772
Url: https://administrator.de/contentid/4628609772
Ausgedruckt am: 23.11.2024 um 14:11 Uhr
5 Kommentare
Neuester Kommentar
Hi,
so wie es aussieht ist doch die Formatierung immer für die ganze Spalte (ohne Kopf) gültig.
Also formatiere es doch entsprechend.
Wenn man mit den Makros noch nicht soviel gemacht hat, ist der Macrorecorder ein guter Anlaufpunkt.
Einfach für jede Spalte das Makro aufzeichnen und dann sinnvoll die Einzelteile in ein Gesamtmakro übertragen.
Es ggibt enug Möglichkeiten hier ganz nach deinen Wünschen zu formatieren.
Entweder (m.E. am einfachsten) die ganze Spalte oder nur von Zelle bis Zelle (Range wird dir hier weiterhelfen).
Der Makrorekorder macht vieln Overhead, aber wenn du dann in der Materie drinsteckst, kannst du das immernoch bereinigen.
Wenn es erstmal läuft macht es Spaß.
Gruß
Xolger
so wie es aussieht ist doch die Formatierung immer für die ganze Spalte (ohne Kopf) gültig.
Also formatiere es doch entsprechend.
Wenn man mit den Makros noch nicht soviel gemacht hat, ist der Macrorecorder ein guter Anlaufpunkt.
Einfach für jede Spalte das Makro aufzeichnen und dann sinnvoll die Einzelteile in ein Gesamtmakro übertragen.
Es ggibt enug Möglichkeiten hier ganz nach deinen Wünschen zu formatieren.
Entweder (m.E. am einfachsten) die ganze Spalte oder nur von Zelle bis Zelle (Range wird dir hier weiterhelfen).
Der Makrorekorder macht vieln Overhead, aber wenn du dann in der Materie drinsteckst, kannst du das immernoch bereinigen.
Wenn es erstmal läuft macht es Spaß.
Gruß
Xolger
Mein Ansatz bezieht sich nur auf die Formatierungen.
1. Tabelle mit Werten füllen
2. Makrorecorder starten
3. Zellen bzw. Spalten entsprechend formatieren
4. Makrorecorder stoppen
5. Ggf. in eine neue Tabelle anlegen
6. mit Daten füllen (Logischerweise dartauf achten, das die Spalten analog zur 1. Tabelle angelegt sind)
7. Makro ausführen
dann sollte es klappen
1. Tabelle mit Werten füllen
2. Makrorecorder starten
3. Zellen bzw. Spalten entsprechend formatieren
4. Makrorecorder stoppen
5. Ggf. in eine neue Tabelle anlegen
6. mit Daten füllen (Logischerweise dartauf achten, das die Spalten analog zur 1. Tabelle angelegt sind)
7. Makro ausführen
dann sollte es klappen
Sub DatenInZeilen()
Dim cell As Range, i As Integer, wSource As Worksheet, wTarget As Worksheet, intNext As Long
' Quellsheet
Set wSource = Sheets("Tabelle1")
' Zielsheet
Set wTarget = Sheets("Tabelle2")
With wSource
.Range("A1:E1").Copy wTarget.Range("A1")
intNext = wTarget.Cells(Rows.Count, "A").End(xlUp).Row + 1
For Each cell In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
intCols = CInt((.Cells(cell.Row, Columns.Count).End(xlToLeft).Column - 1) / 4)
For i = 0 To intCols - 1
wTarget.Cells(intNext, "A").Value = cell.Value
cell.Offset(0, (i * 4) + 1).Resize(1, 4).Copy Destination:=wTarget.Cells(intNext, 2)
intNext = intNext + 1
Next
Next
End With
wTarget.Activate
End Sub
Vorher
Nachher