11.04.2016, 15:30 (Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2016, 15:30 von BoskoBiati.
Bearbeitungsgrund: Fehler im Code korrigiert!
)
Hallo Ralf,
so sollte es gehen:
Code:
Sub Eintrag_Urlaub()
Dim rng As Range
Dim gef As Range
Dim loZeile As Long
Dim loRow As Long
Dim loCol As Long
Dim loSpalte As Long
Dim loUTag As Long
Dim loHj As Long
Dim loLetzte As Long
Dim wks As Worksheet
Dim wks2 As Worksheet
Dim dteStart As Date
Dim dteEnde As Date
Dim dteLauf As Date
Set wks2 = Sheets("Urlaubskalender")
Set wks = Sheets("Liste") 'Eintrags-Tabelle
loLetzte = wks.Cells(Rows.Count, 2).End(xlUp).Row 'letzte belegte Zeile in B (2)
If loLetzte = 2 Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
For loZeile = 3 To loLetzte
If wks.Cells(loZeile, 1) = "xxx" Then
loSpalte = 1
Else
loSpalte = 2
End If
dteStart = wks.Range("B" & loZeile)
dteEnde = wks.Range("C" & loZeile)
If dteEnde = 0 Then dteEnde = dteStart
For loUTag = dteStart To dteEnde
loCol = ((Month(loUTag) - 1) Mod 6) * 7 + 3
If Month(loUTag) > 6 Then loHj = 39
Set rng = Range(wks2.Cells(3 + loHj, loCol), wks2.Cells(39 + loHj, loCol))
loRow = Application.WorksheetFunction.Match(loUTag, rng, 0) + 2
If wks2.Cells(loRow + loHj, loCol + 2) = "" And loUTag Mod 7 > 1 Then wks2.Cells(loRow + loHj, loCol + 2 + loSpalte) = wks.Cells(loZeile, 4)
loHj = 0
Next
Next
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
OK, anbei der Formelversuch. Lauffähig ab Version 2007, da ich intelligente Tabellen verwendet habe. Alles über Formeln in Verbindung mit bedingter Formatierung gelöst. Falls die Datei „Gefallen“ findet, könntet Ihr ja ggf. selbige bei den Komplettlösungen anhängen. Lg Chris
p.s ich habe auch mal die Schulferien farblich gekennzeichnet! Passt das so? Oder sollen diese "optisch" nicht erscheinen.
12.04.2016, 13:31 (Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2016, 13:32 von Rabe.)
Hi,
(11.04.2016, 15:51)snb schrieb: Ich möchte etwas anderes vorschlagen. Angewendet fur januar bis juli.
die Lösung für die Spalten B und C gefällt mir, nur in D steht immer "ddd".
Die INDEX/VERWEIS-Formel trägt alle Tage bei Name "xxx" ein und ein weiterer Nachteil ist für mich, daß ich in einer Periode (wie bei 2 Wochen Urlaub) jeden Tag einzeln in die Liste eintragen muß.
die vorhergehende Version war aus dem Muster von snb produziert, da hatte ich ganz übersehen, dass da Formeln drin waren. die ddd kriegst Du weg, wenn Du in den Formeln daraus TTT machst!
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
12.04.2016, 14:19 (Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2016, 14:20 von Rabe.)
Hi Chris,
(12.04.2016, 10:19)chris-ka schrieb: warum überhaupt VBA?
Du hast den Grundaufbau mit Formeln gemacht ich würde gleich alles über Formeln machen oder alles über VBA.
Ich habe es über VBA zu lösen versucht, weil ich dachte, ich kann es einfacher für mehr Namen (weitere Spalten zwischen F und G) anpassen. Und das hat sich auch bewahrheitet, mit Deinen Formeln in F und G steige ich gar nicht durch. Schon wenn ich die Formel in F durch absolut setzen der Spalte C für G auf diesselbe Datumsspalte setzen will, stehen andere Sachen in F als vorher.
Auch das Eintragen der Feiertage durch das Makro ist flexibler, da ich dann auch zusätzliche Termine in die Spalte E eintragen kann.
Die Formel der Spalte G bezieht sich nicht, wie die in F auf die Datumsspalte C, sondern dann auf die Tagesspalte D.
Was passiert, wenn ich zwischen F und G noch zwei weitere Spalten einfüge?
Was ist das für ein Bezug in A1?