Registriert seit: 24.08.2017
Version(en): Excel 365
Hallo,
ich benutze folgenden Code um mir einen Monat zu generieren
Code: Sub MachMirEinenMonat()
Dim wksQuelle As Worksheet
Dim vntDatum As Variant
Dim lngMonat As Long
Dim lngJahr As Long
Dim wbkNeu As Workbook
Dim lngTageImMonat As Long
Dim lngTag As Long
Set wksQuelle = ThisWorkbook.Worksheets("MeinBeispiel")
vntDatum = InputBox("Gib ein beliebiges Datum des gewünschten Monats ein!" & vbCr & "Beispiel: 13.2.2012")
If Not IsDate(vntDatum) Then
MsgBox "Kein Datum!", , vntDatum
Exit Sub
End If
lngMonat = Month(vntDatum)
lngJahr = Year(vntDatum)
lngTageImMonat = Day(DateSerial(lngJahr, lngMonat + 1, 0))
wksQuelle.Copy
Set wbkNeu = ActiveWorkbook
For lngTag = 2 To lngTageImMonat
wbkNeu.Worksheets(1).Copy After:=wbkNeu.Worksheets(wbkNeu.Worksheets.Count)
Next
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")
Next
'lösche alle Sonntage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 1 Then
Application.DisplayAlerts = False
wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")).Delete
Application.DisplayAlerts = True
End If
Next
'lösche alle Samstage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 7 Then
Application.DisplayAlerts = False
wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")).Delete
Application.DisplayAlerts = True
End If
Next
End Sub
Kann man diesen Code erweitern, so dass in den den Zellen B53:O53 und B62:P62 die Werte aus dem Vortag aus B57:O57 und B66:P66 übernommen werden. Also als Formel z.B.
diese Formel würde auf Tabellenblatt 04.09 in Zelle B53 stehen.
Am ersten Tag des Monats würde der Wert händich eingetragen werden.
Vielen Dank für eure Gedanken
Warum ich mit mir selber rede????
Ich brauche mal nen Experten Rat
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
das Einfügen der Formel könnte z.B. in diesen Bereich:
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")
'hier formel einfuegen
if lngTag > 1 then Rang("B53:O53").Formule = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag-1), "dd.mm") & "'!B57"
Next
(ungetestet)
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 24.08.2017
Version(en): Excel 365
(23.08.2019, 12:47)schauan schrieb: Hallöchen,
das Einfügen der Formel könnte z.B. in diesen Bereich:
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")
'hier formel einfuegen
if lngTag > 1 then Range("B53:O53").Formule = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag-1), "dd.mm") & "'!B57"
Next
(ungetestet)
Danke erst mal das mit Range habe ich noch selber rausgefunden aber nach dem umbennen der ersten beiden Tabellenblätter sagt er Objekt unterstützt Eigenschaft oder Methode nicht
Ne Idee?
Warum ich mit mir selber rede????
Ich brauche mal nen Experten Rat
Registriert seit: 29.09.2015
Version(en): 2030,5
Zum erstellen der Arbeisblätter reicht schon aus:
Code: Sub M_snb()
y = CLng(InputBox("Monatsnummer 1-12", "snb", 1))
For j = 1 To 31
x = DateSerial(Year(Date), y, j)
If Weekday(x, 2) < 6 And Month(x) = y Then
Sheets(1).Copy , Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Format(x, "dd.mm")
End If
Next
End Sub
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
meine Tastatur und ich gehen heute wohl getrennte Wege Formule sollte auch Formula sein
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 24.08.2017
Version(en): Excel 365
26.08.2019, 06:53
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2019, 06:53 von Coprat.
Bearbeitungsgrund: Noch einen Fehler gefunden
)
Hallo Schauaun,
der Code sieht jetzt folgendermaßen aus
Code: Sub MachMirEinenMonat()
Dim wksQuelle As Worksheet
Dim vntDatum As Variant
Dim lngMonat As Long
Dim lngJahr As Long
Dim wbkNeu As Workbook
Dim lngTageImMonat As Long
Dim lngTag As Long
Set wksQuelle = ThisWorkbook.Worksheets("Tabelle1")
vntDatum = InputBox("Gib ein beliebiges Datum des gewünschten Monats ein!" & vbCr & "Beispiel: 13.2.2012")
If Not IsDate(vntDatum) Then
MsgBox "Kein Datum!", , vntDatum
Exit Sub
End If
lngMonat = Month(vntDatum)
lngJahr = Year(vntDatum)
lngTageImMonat = Day(DateSerial(lngJahr, lngMonat + 1, 0))
wksQuelle.Copy
Set wbkNeu = ActiveWorkbook
For lngTag = 2 To lngTageImMonat
wbkNeu.Worksheets(1).Copy After:=wbkNeu.Worksheets(wbkNeu.Worksheets.Count)
Next
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")
'hier formel einfuegen
If lngTag > 1 Then Range("B53:O53").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B57"
Next
'lösche alle Sonntage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 1 Then
Application.DisplayAlerts = False
wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")).Delete
Application.DisplayAlerts = True
End If
Next
'lösche alle Samstage
For lngTag = 1 To lngTageImMonat
If Weekday(DateSerial(lngJahr, lngMonat, lngTag)) = 7 Then
Application.DisplayAlerts = False
wbkNeu.Worksheets(Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")).Delete
Application.DisplayAlerts = True
End If
Next
End Sub
Leider stehen trotzdem keine Formeln drin. Die Tag werden erstellt wie vorher nur die Formeln sind nicht in den Zellen und der Ertste Tag wird nicht mehr erstellt.
Hast du eine Idee?
Warum ich mit mir selber rede????
Ich brauche mal nen Experten Rat
Registriert seit: 29.09.2015
Version(en): 2030,5
26.08.2019, 08:50
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2019, 08:52 von snb.)
Code: Sub M_snb()
y = CLng(InputBox("Monatsnummer 1-12", "snb", 1))
For j = 1 To 31
x = DateSerial(Year(Date), y, j)
If Weekday(x, 2) < 6 And Month(x) = y Then
Sheets(1).Copy , Sheets(Sheets.Count)
with Sheets(Sheets.Count)
.Name = Format(x, "dd.mm")
.cells.replace("*!"),.name & "!",2
end with
End If
Next
End Sub
Registriert seit: 24.08.2017
Version(en): Excel 365
26.08.2019, 11:33
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2019, 11:54 von Coprat.)
Hallo SNB,
auch hier das Problem, dass der erste Tag nicht angelegt wird und die Formeln nicht eingetragen wird. Wo steht denn in welche Zellen die Formel eingetragen wird?
LG Sven
Mit dem ersten Tag nicht angelgt könnt Ihr vergessen ist ja klar wenn der ewrste Tag nen Samstag bzw Sonntag ist Liegt es dann daran, dass die Formeln nicht eingegeben werden?
Code: 'hier formel einfuegen
If lngTag > 1 Then Range("B53:O53").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B57"
If lngTag > 1 Then Range("B62:P62").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B66"
Next
So habe ich das jetzt angepasst um meine Bereiche wo die Formeln hin sollen auch klappt
Excel macht dies aber nur auf dem letzten Tabellenblatt des Monats Warum?
Warum ich mit mir selber rede????
Ich brauche mal nen Experten Rat
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
IMHO fehlt es da an einer korrekten Referenz.
Code: If lngTag > 1 Then Range("B53:O53").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B57"
If lngTag > 1 Then Worksheets(lngTag).Range("B62:P62").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B66"
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 24.08.2017
Version(en): Excel 365
26.08.2019, 12:28
(Dieser Beitrag wurde zuletzt bearbeitet: 26.08.2019, 12:41 von Coprat.)
Index außerhalb des gültigen Bereichs
mit meiner erweiterung hat es geklappt halt nur auf dem Letzten reiter. Jetzt Sthen am letzten Tag des Monats in Zellen B53:O53 und in Zellen B62:P62 die werte von dem vorletzten Tag aus B57:O57 bzw B66:P66
Bei Schauaun war es auch nur auf der letzten Seite
Also nochmal der komplette Code wie ich Ihn benutze Ich habe das entfernen von Samstag und Sonntag rausgenommen, dann klappt es auf dem letzten Blatt mit dem einfügen der Formel.
wie bekomme ich es hin, dass auf allen außer dem ersten Blatt des Monats die Formel eingegeben wird?
Code: Sub MachMirEinenMonat()
Dim wksQuelle As Worksheet
Dim vntDatum As Variant
Dim lngMonat As Long
Dim lngJahr As Long
Dim wbkNeu As Workbook
Dim lngTageImMonat As Long
Dim lngTag As Long
Set wksQuelle = ThisWorkbook.Worksheets("Tabelle1")
vntDatum = InputBox("Gib ein beliebiges Datum des gewünschten Monats ein!" & vbCr & "Beispiel: 13.2.2012")
If Not IsDate(vntDatum) Then
MsgBox "Kein Datum!", , vntDatum
Exit Sub
End If
lngMonat = Month(vntDatum)
lngJahr = Year(vntDatum)
lngTageImMonat = Day(DateSerial(lngJahr, lngMonat + 1, 0))
wksQuelle.Copy
Set wbkNeu = ActiveWorkbook
For lngTag = 2 To lngTageImMonat
wbkNeu.Worksheets(1).Copy After:=wbkNeu.Worksheets(wbkNeu.Worksheets.Count)
Next
For lngTag = 1 To lngTageImMonat
wbkNeu.Worksheets(lngTag).Name = Format(DateSerial(lngJahr, lngMonat, lngTag), "dd.mm")
'hier formel einfuegen
If lngTag > 1 Then Range("B53:O53").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B57"
If lngTag > 1 Then Range("B62:P62").Formula = "='" & Format(DateSerial(lngJahr, lngMonat, lngTag - 1), "dd.mm") & "'!B66"
Next
End Sub
Danke für eure Überlegungen
Warum ich mit mir selber rede????
Ich brauche mal nen Experten Rat
|