Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Urlaub in Monatsblätter eintragen

Urlaub in Monatsblätter eintragen
22.12.2021 17:34:01
Peer
Hallo liebe Excel Gemeinde.
Ich möchte bei meinem Projekt ein Lösung einbauen, die den Urlaub mit Anfangsdatum und Enddatum in der Tabelle "Urlaub" (Range A3 bis letzter Eintrag Spalte B) auf Klick in den vorhanden Kalender mit den 12 Monatsblättern in Spalte C einträgt.
Dabei wird durch Klick auf "Eintrage" im Sheet "Urlaub" der Kalender erzeugt und es sollten die Urlaubstage aus dem Sheet "Urlaub" übertragen werden.
Ich habe verschiedene Ansätze probiert, komme aber nicht weiter.
Der Kalender wird soweit schon ganz gut erstellt, nur das Problem mit dem Urlaub funktioniert nicht.
Kann mir jemand hier auf die Sprünge helfen?
Vielen Dank für jede Hilfe.
https://www.herber.de/bbs/user/149964.xlsm
Gruß
Peer

30
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Urlaub in Monatsblätter eintragen
22.12.2021 21:16:09
Yal
Hallo Peer,
so etwa ? :
https://www.herber.de/bbs/user/149966.xlsx
Ich habe nur ein Reiter "Jahr" der passende Monat wird durch Filter isoliert.
Keine Makro, keine Formel. Einfach neue Urlaub oder Feiertag eintragen, dann auf Jahr Rechtsklick "Aktiualisieren"
Die Magic dahinter heisst Power Query. Siehe im Menü "Daten, "Abfragen anzeigen".
VG
Yal
Sollten die Monate einzel notwendig...
22.12.2021 22:43:10
Yal
..sein, hier das Makro, um eine Monatsabfrage pro Blatt zu erzeugen:

Sub Monate_erstellen()
Dim i
For i = 1 To 12
Monat_erstellen i
Next
End Sub
Private Sub Monat_erstellen(ByVal Monatszahl As Integer)
Dim ws As Worksheet
ThisWorkbook.Worksheets.Add After:=Sheets(Worksheets.Count)
Set ws = Sheets(Worksheets.Count)
ws.Name = Format(DateSerial(2021, Monatszahl, 1), "MMMM")
ws.Range("A1").Select
With ws.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""GanzeJahr"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.BackgroundQuery = True
.CommandText = Array("SELECT * FROM [GanzeJahr] Where Month([Datum])=" & Monatszahl)
.CommandType = xlCmdSql
.Connection = _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""GanzeJahr"";Extended Properties="""""
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ListObject.Name = ws.Name
.Refresh
End With
ws.Columns("A:A").NumberFormat = "ddd/ dd/mmm/"
ws.Range("A2").Select
End Sub
VG
Yal
Anzeige
AW: Sollten die Monate einzel notwendig...
23.12.2021 19:10:21
Peer
Nochmals Hallo.
Hier gibst du mir eine Lösung zum Erzeugen der Monatsblätter?
Sehe ich das richtig?
In meinem (sehr großem) Projekt habe ich den Code zum Erzeugen der Monatsblätter am Laufen.
In der Beispieldatei habe ich einen sehr stark reduzierten Code des Projektes implementiert und versucht, mein Anliegen zu demonstrieren.
AW: Urlaub in Monatsblätter eintragen
23.12.2021 16:35:49
Alwin
Hallo Peer,
da du bisher noch nicht reagiert hast, vermute ich mal du wartest auf einen Lösungsvorschlag, entsprechend deines Aufbaus. Yal hatte dir schon eine eigene und vor allem zeitgemäße Möglichkeit angeboten. Ich hoffe Yal ist mir nicht böse, wenn es wieder mal in meinen Fingern gejuckt hat und ich nicht wiederstehen konnte.
Vorgehensweise wäre in dem Beispiel Doppelklick auf Zelle (Urlaubsbeginn) in Spalte A der Zeile, welche in den entsprechenden Monat/Monaten übertragen werden soll.
In Modul des Tabellenblattes "Urlaub":

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long, j As Long, k As Long, l As Long, Monat As String, Monat2 As String, UTag As String, suchTag As Range
i = ActiveCell.Row
j = CDate(Cells(i, 2) - Cells(i, 1) + 1)
Monat = Format(CDate(ActiveCell), "mmmm")
Monat2 = Format(CDate(ActiveCell.Offset(0, 1)), "mmmm")
UTag = Format(CDate(ActiveCell), "dd")
With Sheets(Monat)
.Unprotect
Set suchTag = .Range("A:A").Find(CDbl(UTag), LookAt:=xlWhole)
If Not suchTag Is Nothing Then
If Format(CDate(Cells(i, 2)), "mmmm") = Format(CDate(Cells(i, 1)), "mmmm") Then
For k = 1 To j
.Cells(suchTag.Row + k - 1, 3) = "Urlaub"
Next k
Else
For k = 1 To .Cells(Rows.Count, 1).End(xlUp).Row - suchTag.Row + 1
.Cells(suchTag.Row + k - 1, 3) = "Urlaub"
Next k
l = j - k
With Sheets(Monat2)
.Unprotect
For k = 1 To l + 1
.Cells(k, 3) = "Urlaub"
Next k
.Protect
End With
End If
End If
.Protect
End With
End Sub
Nach Ausführung der Prozedur steht in der Spalte C Urlaub in den Zellen. Das kannst du dann nach Gusto dir entsprechend passend machen.
Gruß Uwe
Anzeige
@Uwe: keinesfalls
23.12.2021 18:06:21
Yal
Je mehr Antworte, desto wahrscheinlicher, dass eine dabei passend ist (nicht im Sinn von was funktioniert, sondern was die Erwartung trifft).
Außerdem, seien wir ehrlich: es geht meistens nicht nur darum, jemand zu helfen, sondern auch selber ein Rätsel zu lösen. Sudoku ist diese von abgelutscht :-))
VG
Yal
AW: @Uwe: keinesfalls
23.12.2021 18:17:16
Alwin
Hallo Yal,
Das mit dem Rätsel lösen stimmt. Wenn Ich Zeit habe, nehme immer mal was hier aus dem Forum raus, ums zu lösen. Nicht immer setze ichs als Antwort rein. Vor allem dann nicht, wenn mir nur eine umständliche Lösung einfällt und diese mir selbst nicht gefällt.
Ich wünsche dir schöne Feiertage und einen guten Rutsch ins neue Jahr.
Gruß Uwe
Anzeige
AW: Urlaub in Monatsblätter eintragen
23.12.2021 19:47:39
Peer
Hallo Uwe.
Ich danke dir für deine Unterstützung.
Private Probleme zwingen mich aktuell dazu, mein momentanes Hobby zu vernachlässigen, deshalb entschuldige die späte Antwort.
Es ist richtig, ich suche eine Lösung für meinen Code.
Ich habe vor, in meiner jetzigen (sehr großen Datei ca 400 kb) eine Möglichkeit zu finden, über einen Klick auf einen Button im UF Urlaub, den gelisteten Urlaub in meinem Kalender, der jedes Jahr neu erzeugt wird, jederzeit zu aktualisieren.
Der Urlaub wird mit Anfang und Ende im Blatt A3:B eingetragen und in eine ListBox im UF Urlaub eingelesen .
Es sollen in dem UF die Daten angezeigt und geändert werden und anschließend in die Monatsblätter übertragen werden.
Die Blätter selber sind nur noch zur Darstellung vorgesehen, alle nötigen Einträge erfolgen über UF.
Ich habe deine Lösung in die Beispieldatei geladen und durchlaufen gelassen. Wenn ich die betreffende Zeile selektiere, funktioniert alles bestens.
Ich muss aber immer die Zeile selektieren.
Kann man nicht alle Einträge von Blatt Urlaub A3:letzte Zeile im Batch eintragen lassen, ohne zu selektieren?
Ich habe die Variable i hierzu geändert:

'      i = ActiveCell.Row
i = Sheets("Urlaub").Cells(3, 1).End(xlUp).Row
, aber der Debugger bleibt bei der Variable j hängen.
Ich laden die Datei vielleicht nochmal geändert hoch.
https://www.herber.de/bbs/user/149979.xlsm
Gruß
Peer
Anzeige
AW: Urlaub in Monatsblätter eintragen
23.12.2021 21:07:10
Alwin
Hallo Peer,
das funktioniert so wie du es geändert hast nicht. Du hattest ja geschrieben, dass per Klick auf die Zellen der Spalte A der Urlaub in die Monate eingetragen wird. Man kann natürlich das auch in einem Rutsch erledigen, dann musst du die Variable i von der 1. Zeile zur letzten Zeile in einer Schleife durchlaufen lassen. Aber vorher müssen alle Urlaubseinträge aus den Monaten entfernt werden, damit es sauber funktioniert. Dieser Vorgang muss dann auch immer wiederholt werden, wenn bereits eingetragenen Urlaubsdaten per Userform geändert werden, was aus der von dir hochgeladenen Datei nicht ersichtlich war. Ich schau mir das am Wochenende mal in Ruhe an.
Gruß Uwe
Anzeige
AW: Urlaub in Monatsblätter eintragen
23.12.2021 22:06:46
Peer
Guten Abend Uwe.
Nachdem ich dir die Nachricht geschickt habe, dachte ich schon über die Schleife nach.
Wie sie aussehen soll, ist mir aber noch nicht bewusst.
Ich danke dir im Voraus für deine Mühe.
Aber feiere in Ruhe mit deiner Familie Weihnachten und genieße die Zeit.
Und wenn du danach Zeit für mich findest, würde ich mich sehr darüber freuen.
LG
Peer
AW: Urlaub in Monatsblätter eintragen
27.12.2021 08:48:00
Peer
Guten Morgen, Uwe.
Ich hoffe, du hast die Festtage (nicht zu sehr) gesättigt vollbracht und bist reichlich beschenkt worden.
Ich habe deine Arbeit einmal gestartet und werde nach und nach alles durchgehen.
Das erste, was ich finden konnte ist, das die Sortierung bei .Apply abbricht.
Meine Absicht war, die Liste sortiert auszugeben, am besten gleich beim Laden und wenn möglich, beim Aktualisieren der UF. Beim Zurückschreiben in die Tabelle sollte die Sortierung auch gleich erfolgen.
Ich kann nicht sehen, woran es liegen kann, das die Sortierung nicht arbeiten will.
Meine Vermutung ist RowSource, finde aber keine Lösung.
Hast du einen Tipp?
VG
Peer
Anzeige
AW: Urlaub in Monatsblätter eintragen
27.12.2021 09:47:13
ralf_b
Moin Peer,
sag mal wie lange machst du das jetzt schon? Und dann sowas?

Tabelle13.Name & "!A3:C120" & LoLetzte

Und was sind denn das für Fehlerbeschreibungen? Wie diese hier mitgeteilt werden sollten, weist du doch. Detailiert!
Dann das hier

'TextBoxen auslesen
txt_UrlaubAnspruch.Value = .Cells(1, 3).Value
Der Kommentar muss heißen Textboxen einlesen oder füllen. Also genau anders herum.
Und wieso liest du die Werte aus der Tabelle ,wenn du sie schon in der Listbox hast?

.Cells(i, 1) = CDate(txt_UrlaubBeginn)
läuft auf einen Fehler wenn die Textbox leer ist. An anderer Stelle wurde du das mit einer Abfrage abgefangen.
Ich glaube du hast VBA bisher noch nicht ansatzweise verstanden und willst es vielleicht auch gar nicht. Und das bei der massiven Unterstützung von hier.
Anzeige
AW: Urlaub in Monatsblätter eintragen
27.12.2021 11:47:00
Alwin
Hallo Peer,
anbei die mindestens erforderlichen Änderungen. Die Sortierung konnte so nicht mehr funktionieren, da ich die Tabelle zwecks automatischer Fortschreibung der Formeln formatiert habe. Die Fehlerbehandlung sollte so auch ausreichen. Mit VBA habe ich auch einigen Anlauf gebraucht und bin selbst noch am Üben und Lernen. Problemstellungen, welche mich interessieren nutze ich natürlich dazu.
https://www.herber.de/bbs/user/150014.xlsm
Gruß Uwe
AW: Urlaub in Monatsblätter eintragen
27.12.2021 19:11:04
Peer
Hallo Uwe.
Danke für deine schnelle Rückmeldung.
Du hast ja gleich noch ein paar Gültigkeitsprüfungen bei der Eingabe der "Neuen Einträge" eingebaut. Danke dafür.
Ich habe noch sehr viel zu lernen. Ich habe zwar Spaß daran, aber leider brauche ich scheinbar zulange, um Zusammenhänge zu verstehen.
Eine Frage zur letzten hoch geladenen Datei.
Bricht bei dir die Excel-Datei auch zusammen, sobald du in die leeren TextBoxen der UF für einen neuen Eintrag auf den "Speicher"-Button drückst?
Ich glaube, die Sortierung verursacht den Absturz.
Ich finde nur nicht die Ursache.
Gruß
Peer
Anzeige
AW: Urlaub in Monatsblätter eintragen
27.12.2021 20:22:37
Alwin
Hallo Peer,
nein es läuft sauber durch. Du kannst ja mal die auskommentierten Befehle der "SortierenInTabelle" Prozedur wieder aktivieren.
Es gibt aber mit der ganzen Userform ein seltsames Problem. Das wird erst auffällig, wenn man Änderungen speichern will. Aus nicht erkennbaren Gründen springt die Prozedur nach schreiben aus:

.Cells(i, 1) =CDate(txt_UrlaubBeginn)
in:

Private Sub lst_Urlaub_Click()
durchläuft Diese und übergibt die Werte der Listbox erneut in die beiden Textboxen, was ein Zurückschreiben eventuell geänderter Daten der Textbox in die verhindert und die ursprünglichen Werte zurückschreibt. Es existiert aber dazu kein darin eingetragener Ansprung Befehl.
Gruß Uwe
Anzeige
AW: Urlaub in Monatsblätter eintragen
27.12.2021 21:40:33
ralf_b
Hallo Alwin,
das könnte an der Rowsource Verknüpfung liegen. Dadurch wird der Wert in der Listbox normalerweise geändert.
Loletzte wird übrigens nur einmal gesetzt. Das macht dann die erneute Zuweisung der Rowsource in den Subs fragwürdig.
Spätestens beim Hinzufügen von Wertezeilen wäre das zu überdenken.
Wenn du bereits eine intelligente Tabelle nutzt, dann zieh das doch auch durch die anderen Subs.
.RowSource = Tabelle13.Range("Tabelle1[[Beginn]:[Tage]]").Address(, , , True)
.RowSource = Tabelle13.ListObjects(1).ListColumns(1).DataBodyRange.Resize(, 3).Address(, , , True)
AW: Urlaub in Monatsblätter eintragen
27.12.2021 22:48:09
Alwin
Hallo Peer und Ralf_b,
ich war mal so frei und habe das alles innerhalb der Userform auf eine Schiene (formatierte Tabelle) gestellt. Bin aber nicht so weit gegangen, dass man die Tabelle im Blatt problemlos verschieben kann, da brauchts dann doch ein paar Zeilchen mehr. Ich wollte es nicht unübersichtlicher werden lassen als nötig. Jetzt kann man beim Erzeugen eines neuen Kalenderjahres auch gleich die Urlaubstabelle, wenn man will, mit löschen.
Es war eine Summe von Problemen, warum einiges nicht sauber lief. Im Tabellenblatt habe ich dann zu guter letzt (Arzgebergscher Ausdruck) alle Zeilen, welche schon mal beschrieben waren gelöscht.
https://www.herber.de/bbs/user/150026.xlsm
Gruß Uwe
AW: Urlaub in Monatsblätter eintragen
28.12.2021 00:23:17
ralf_b
Hallo Alwin,
schau mal, ich brauchte ein bissel Auffrischung. Habe auf Listobject umgestellt.
damit es auch nen Mehrwert hat, habe ich eine Doppeltprüfung für das Startdatum eingebaut.
https://www.herber.de/bbs/user/150027.xlsm
AW: Urlaub in Monatsblätter eintragen
28.12.2021 07:23:34
Peer
Guten Morgen Uwe und ralf_b.
Vielen Dank für eure schnelle Hilfe.
Ich bin auf dem Weg zur Arbeit kurz eure Lösungen durchgegangen und beide, wenn auch unterschiedlichen Ansatzes, funktionieren gut.
Ich werde heute Abend nach der Arbeit alles detaillierter durchgehen und berichten.
Ich möchte nochmal erinnern, dass ich bezwecke, in meinem Projekt, bei dem die Kalendererstellung schon tadellos funktioniert, den Urlaub Routine hinzuzunehmen. Das eingeben und aktualisieren sollte auch innerhalb des Jahres möglich sein.
Dabei soll der Urlaub nur in den Zeilen mit dem Text "Urlaub" eingefügt werden, wenn kein Wochenende und kein Feiertag (Sheet Feiertage), sonst "Ruhe".
Ich denke, DateSerial oder DateDiff wird hier nötig sein.
@ralf_b
Du hast die Format in den TextBoxen in Text umgewandelt. Welchen Zweck hat es deiner Meinung nach? Ich hätte gern mit WorksheetFunktion.NetwordDays mir den beiden Werten aus den TextBoxen lbl_UrlaubTage nach Eingabe von txt_UrlaubEnde berechnen lassen wollen, um bei Eingeben der Tage gleich die Tage zu erkennen.
Ich melde mich heue Abend nochmal.
Schönen Tag euch beiden
AW: Urlaub in Monatsblätter eintragen
28.12.2021 10:54:06
Alwin
Hallo ralf_b,
ist auch interessant für mich. Die Überprüfung auf doppeltes Datum hatte ich übersehen. Ich hatte nur eine Sperre gegen das Vertauschen Start- Enddatum angelegt. Interessant wäre ein Abblocken von Verlaufsüberschneidungen. Da bastle ich heute mal später dran. Jetzt geh ich erst mal an die frische Luft, bis das Wetter schlechter wird.
@Peer
Wenn ich es richtig verstanden habe, soll in den Monatstabellen an Wochenenden und Feiertagen nicht "Urlaub" sondern "Ruhe" stehen. Wenn das so richtig ist, hätte ich mal eine kleine Denkaufgabe für dich. In Prozedur "Urlaub" hast du eigentlich schon die Lösung dieses Problems drinstehen. Schau die Zeile 80 an. Das kannst du in "UrlaubEintragen" in die Schleifen angepasst einbauen und statt .ColorIndex via If/Else "Ruhe" in die Zellen statt "Urlaub" übergeben. Die einfachere Variante wäre im Modul der Tabelle eine automatische Umbenennung bei erkannten Wochenenden und Feiertagen einzubauen. Beides kann zum Ziel führen. Die Userform haben wir dir schon weitestgehend aufgeräumt.
Gruß Uwe
AW: Urlaub in Monatsblätter eintragen
28.12.2021 14:04:30
ralf_b
@ Peer ..ich versteh die Frage nicht. Habe die Rechnung für das Tageslabel überarbeitet.
@Alwin eine Überschneidungsprüfung. wie willst du vorgehen. In der Monatstabelle nachsehen oder in der Urlaubstabelle?
eine komplexe Datumsprüfung für die Eingabe von Start und Ende wäre auch recht sinnvoll. Eine parametergesteuerte Prüffunktion habe ich gebastelt.
und das Tageslabel geht auch
was sollen die Tageskürzel Mo Di Mi usw. unterhalb der 30 Tage in den Kalenderblättern?
AW: ups die datei fehlte noch
28.12.2021 15:49:55
Alwin
Hallo ralf_b,
das reicht eigentlich schon. Die Prozedur zum Eintrag von Urlaub habe ich um "Pause" etwas unkonventionell erweitert. So lange der ColorIndex des Textes auf 3 bleibt funktioniert das. Eine Fehlermeldung bei geleerter intelligenter Tabelle habe ich noch im Initialize der Userform beseitigt. Es hat mir Spaß gemacht und man lernt dabei was Gescheites. Was in den Monatstabellen unter dem Monatsverlauf steht - keine Ahnung was Peer damit bezweckt.
https://www.herber.de/bbs/user/150039.xlsm
Gruß Uwe
AW: ups die datei fehlte noch
28.12.2021 18:55:51
Peer
Hallo Uwe, Hallo ralf_b.
Ich bin jetzt endlich daheim und habe mich gleich an eure Dateien gemacht.
Zu allererst muss ich erwähnen, dass die besagten Einträge unter den Monats-Tabellen Überbleibsel aus einer alten Schleife, die ich versucht hatte, sind und ich einfach vergessen habe, die Einträge zu löschen.
Ich muss mich entschuldigen für die Arbeit die ich euch mache. Ich wäre in der Tat nicht in der Lage gewesen, es so zu basteln, wie ihr beiden.
Die Idee, die Uwe beschrieben hat und mir als Aufgabe gestellt hat, hatte ich schon, nur war mir auf Anhieb nicht bewusst, an welcher Stelle ich sie hinzufügen muss.
Ich merke immer wieder aufs neue, wie schlecht mein VBA ist, obwohl ich manchmal glaube, zumindest einfache Dinge selbst lösen zu können.
Aber dann merke ich, dass ich (noch) weit von euch entfernt bin, gerade wenn wieder neue Lösungsvorschläge, wie hier die Function "checkinput" auftauchen.
Es ist erstaunlich, was ihr so alles könnt.
Ich möchte trotzdem meine Beobachtungen zu eurer tollen Arbeit erwähnen.
Wie ist die Vorgehensweise gedacht, wenn ich einen neuen Eintrag einfügen möchte?
Wenn ich "neuen Eintrag" klicke, ohne das in den TextBoxen ein Eintrag steht, kommt Fehlermeldung Typ 13. Das kann man notfalls mit Abfangen des Fehlers bereinigen, obwohl ne Menge User hier davor warnen.
Wenn ich in die leeren TextBoxen ein Datum schreibe und klicke auf "Änderung speichern", kommt Meldung "...kein Eintrag...".
Klicke ich auf "neuer Eintrag", passiert nichts.
Wenn ich einen vorhandenen Eintrag aus der ListBox wähle, wird die Meldung "...Eintrag schon vorhanden.." gezeigt und trägt ihn anschließend trotzdem ein.
Löschen kann ich aktuell den Eintrag nur in der Tablelle13, was aber dann zur Folge hat, das "Tabelle1" um eine Zeile erweitert wurde und dann in lst_Urlaub als "letzter" leerer Zeile erscheint. Bei Anklicken des Eintrages in der Liste werden beide TextBoxen als "00:00:00" formatiert. Überschreibe ich die Werte mit gültigen Datumangaben, wird der Eintrag in der Liste ohne .NetworkDays hinterlegt.
Eine Frage habe ich zur eurer "Überschneidung"- Überlegung.
Wie kann man prüfen, ob das oder die Tage sich überschneiden und darauf reagieren?
Z.B.
Ein Eintrag 12.12.2021 bis 15.12.2021 steht schon fest. Nun möchte ich bei der Eingabe des neuen Eintrages (aus Versehen) 11.12.2021 bis 13.12.2021 hinzufügen. Da wäre der 12.12. und der 13.12. "zu viel".
Diesen Gedanken nehme ich mal mit ins neue Jahr.
Ich muss leider die restlichen Tage diesen Jahres von früh bis späten Nachmittag arbeiten und kann deshalb erst spät Abend an den PC :-(
Ich möchte mich nochmal ausdrücklich für eure Mühe danken, die ihr mir bis jetzt gegeben habt.
VG
Peer
AW: ups die datei fehlte noch
28.12.2021 20:27:39
Peer
Guten Abend, Uwe.
Vielen Dank.
AW: Urlaub in Monatsblätter eintragen
29.12.2021 07:18:17
Peer
Hallo ralf_b.
Ich bin gestern Abend noch an deinem Beispiel gesessen und wollte eine Prozedur zum Löschen markierter Einträge in der Liste mit gleichzeitigem Entfernen aus der Tabelle13 (Urlaub) erstellen. Dabei habe ich aus Versehen alle Einträge aus "Tabelle1" (Bereichname) gelöscht. Nun habe ich die Chancenutzen wollen und gleich einmal versucht, neue Einträge zu erstellen, was in jedem neuen Jahr vorkommen wird, und dabei blieb der Debugger an Function Checkboxinputs hängen.
Was kann (muss) man hinzufügen, wenn man den Fehler vermeiden möchte?
https://www.herber.de/bbs/user/150050.xlsm
Gruß
Peer
AW: Urlaub in Monatsblätter eintragen
29.12.2021 23:47:59
ralf_b
Hallo Peer,
das der Thread jetzt im Archiv ist, weis ich nicht ob die Emailbenachrichtigungen noch funktionieren.
Also das es nun verschiedene Versionen gibt und ich es als sehr aufwendig empfinde die Versionen zu vergleichen und nichts zu verpassen, bin ich hier raus.
das Löschen ist auf Listbox mit Multiselection ausgelegt. Die listbox ist aber in Singelselection. Bei der Standart singelselection werden deshalb alle Einträge gelöscht. Das habe ich umgestellt.
Alwins Überschneidungsabgleich funktioniert bei Änderungen natürlich nicht, wenn die Eintragung schon vorhanden ist. Ich habe hier eine Einschränkung vorgenommen.
Ein neues Modul wurde hinzugefügt und neue globale Variablen, die im initialize gefüllt werden.
Sowas wie Tabelle13...... sollte im Code nicht mehr verwendet werden. Sobald sich der Codename ändert wars das mit Funktion. Deshalb globale Variablen.
Die Prüfung der Eingabefelder der Datumswerte wurden von checkinputs entkoppelt. Eine alternative Prüfung aber eingebaut.
Verstehe den Code, lerne ihn lesen!
hier sind jetzt bis datei 63 alles drin was ich gesehen habe.
https://www.herber.de/bbs/user/150066.xlsm
AW: Urlaub in Monatsblätter eintragen
30.12.2021 17:40:20
Peer
Hallo ralf_b.
Ich hatte mit den unterschiedlichen Wegen z.B die Möglichkeiten des Füllens der ListBox gemeint, RowSource, Array, oder Bereichsname, wobei ich letzteres noch nicht kannte.
Ich bin scheinbar nicht so begabt wie ihr beim Lernen. Ich gebe mein bestens, aber leider langt es nicht, wie ich es gern hätte. Ich habe gemerkt, das man sehr viel Zeit braucht und immer an der Sache dran bleiben muss, was bei mir kaum machbar ist.
Meistens glaubt man, man ist einen Schritt weiter, und dann kommt ein weiterer Lösungsweg, den man verstehen muss. Und das ist meistens das Problem, Lernen und dann Verstehen. Verstehen ist im Moment das größere Problem.
Zur Sache selbst.
Vielen Dank nochmals, dass du dich trotzdem der Angelegenheit angenommen hast und mit einer Lösung positiv beigetragen hast.
Ich bin an dem Tag meiner letzten Frage darauf gestoßen, an was es lag, warum ich bei leeren Einträgen die Fehlermeldung bekommen habe. Ich habe einfach die Formeln Nettoarbeitstage() aus der Spalte C gelöscht, und damit war die Meldung auch weg. Später bin ich noch darauf gekommen, dass ich ja ursprünglich das MultiSelect wollte und nicht eingestellt habe.
Tabelle13 werde ich natürlich ändern. Ich habe es nur von Uwe übernommen und zur Veranschaulichung behalten.
Die Datumsüberschneitung finde ich genial. Vielen vielen Dank dafür.
Jetzt werde ich mich mit deinem und Uwe's Code beschäftigen.
Ich wünsche Euch beiden einen guten Rutsch ins neue Jahr.
VG
Peer
AW: Urlaub in Monatsblätter eintragen
30.12.2021 18:55:16
ralf_b
Hallo Peer,
das was wir dir zusammenbasteln hat nicht den Anspruch auf Vollständigkeit. Es sollte immer nur als Vorschlag verstanden werden, denn der Verantwortliche entscheidet letztendlich was umgesetzt wird.
Egal ob Rowsource ,Array, oder Namen. Solange man den Code drum herum richtig schreibt ,geht jede Variante.
Bei Listboxen wird oft und gerne der Listindex genutzt. Bei Multiselect geht das nicht mehr. Da sollte man die Vor- und Nachteile abwägen.
Für eine eher übersichtliche Liste mit einer Handvoll Listeneinträgen klickt man schnell die paar Dinger einzeln weg.
Die Logik, um zu verhindern das Fehleingaben oder Überscheidungen existieren, ist wesentlich anspruchsvoller. Da wäre es sinnvoll die Notwendigkeiten schriftlich festzuhalten und danach den Code dafür zu schreiben.
Bei Listobject muß man trotzdem immer prüfen ob gewisse Dinge überhaupt vorhanden sind.
z.b. gibt es Listrows(Datenzeilen), wenn man Databodyrange(Datenbereich der Tabelle) nutzt, sollte sichergestellt werden das die auch nicht Null(Nothing) ist. Nach Löschen aller Daten wäre das der Fall., Auch die Nettoarbeitstageformel muß in die erste Datenzeile erstmal reingeschrieben werden. Sonst kann Excel die nicht automatisch mit in neue Zeilen einfügen. Diese ganzen Kleinigkeiten habe ich dank deiner Aufgabe nun auch kapiert.
Grundsätzlich bin ich aber der Meinung, das wir dir schon zu viel Arbeit abgenommen haben. Das ist aber nicht deine Schuld. Leider reizt es zu sehr die Dinge lieber selbst anzugehen als das man es ewig hin und her erklären muß.
Bis zum nächsten Mal.
gruß
rb

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige