Hilfe neues Quartal/Spalte in VBA
31.05.2017 14:35:59
JonnyBank
ich brauch doch nochmal eure Hilfe. Bitte.
Ürsprünglicher Beitrag:
Ich habe folgendes Problem ich möchte in meiner Beispieldatei ein neues Quartal per _
Buttonklick hinzufügen.
das Makro müsste also folgendes können:
1. die letzte Spalte ermitteln (Vorquartal) um zu wissen wo das neue Quartal hinzugefügt _
werden soll
2. neue Spalte einfügen
2. nur Formeln (mit entsprechender Formatierung) sollen übernommen bzw. weitergezogen werden( _
nice to have : zum Jahresende 31.12 können sich die Formeln unterscheiden somit die Formel aus dem Vorjahr nehmen)
3. Werte sollen nicht übernommen werden, da diese monatlich ermittelt werden und nachgetragen _
werden.
Ich muss im Moment jede einzelne Zeile anpassen was bei über 1000 Zeilen schon etwas dauert.
wäre super wenn mir jemand helfen könnte.
Danke euer Jonny
Link zum Beispiel
https://www.herber.de/bbs/user/113727.xlsx
https://www.herber.de/forum/archiv/1556to1560/1559731_Hilfe_neues_QuartalSpalte_in_VBA.html#1559968
Lösung von UWED
Private Sub QQQ()
On Error GoTo Fehler
Dim TB, SP As Integer, LR As Double, LC As Integer
Dim EZ As Integer, LastQ As Date, RNG, OF As Integer
Set TB = Sheets("Tabelle1")
SP = 2 'Spalte B
EZ = 3 'ab Zeile
With TB
LR = .Cells(.Rows.Count, SP).End(xlUp).Row 'letzte Zeile der Spalte
LC = .Cells(EZ, .Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile
LastQ = .Cells(EZ, LC) 'letztes Quartalsende
Set RNG = .Range(.Cells(EZ + 1, LC + 1), .Cells(LR, LC + 1))
OF = IIf(Month(LastQ) = 9, 4, 1)
RNG.Offset(0, -OF).Copy RNG
On Error Resume Next
RNG.SpecialCells(xlCellTypeConstants, 23).ClearContents 'konstante Werte löschen
On Error GoTo Fehler
.Cells(EZ, LC + 1).Value = DateSerial(Year(LastQ), Month(LastQ) + 4, 0)
End With
'*** Fehlerbehandlung
Err.Clear
Fehler:
If Err.Number 0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Leider kann ich meinen alten Beitrag nicht mehr bearbeiten bzw. erweitern (ist im Archiv)ich habe jetzt folgendes Problem:
Wenn ich jetzt am 31.12.2017 ein neues Quartal hinzufüge (31.03.2018) dann übernimmt er hier auch die Formeln vom 31.12.2017... das sollte aber nicht sein... bessere wäre wenn sich das Makro an dem Monat davor orientiert.... Wie gesagt gibt es diese Besonderheit der Formeln nur zum jeweils 31.12. eines jeden Jahres...aktuell würde er diese Formel dann in jedes Jahr übernehmen.
Ich habe den Großteil des Makros auch soweit ganz gut verstanden nur der teil mit:
Set RNG = .Range(.Cells(EZ + 1, LC + 1), .Cells(LR, LC + 1))
OF = IIf(Month(LastQ) = 9, 4, 1)
RNG.Offset(0, -OF).Copy RNG
On Error Resume Next
verstehe ich noch nicht ganz vielleicht kann mir jemand helfen =)mfg Jonny
Danke schonmal