11.04.2016, 16:30 (Dieser Beitrag wurde zuletzt bearbeitet: 11.04.2016, 16: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, 14:31 (Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2016, 14:32 von Rabe.)
Hi,
(11.04.2016, 16: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, 15:19 (Dieser Beitrag wurde zuletzt bearbeitet: 12.04.2016, 15:20 von Rabe.)
Hi Chris,
(12.04.2016, 11: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?