Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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

Urlaubsliste erstellen

Urlaubsliste erstellen
21.07.2014 20:29:40
Dominik
Hallo Excel-Experten,
ich hab vor, die bestehende Urlaubsliste ein bisschen komfortabler zu gestalten. Da ich selbst eher ein "Hobbybastler" bin, benötige ich dringend eure Hilfe. Einiges konnte ich schon selbst zusammenbasteln, allerdings sind noch so ein paar Macken drin, die das Gesamtbild etwas unrund machen^^
Meine beiden Hauptprobleme sind das Einbinden einer Schaltjahrfunktion und zum anderen die automatische Änderung der Tabellennamen bzw. Reiter.
Zum Schaltjahr hab ich mir gedacht, dass sich die "Februar"-Tabelle um den 29. erweitert und _
beim darauffolgenden Jahr wieder zum 28. verkürzt. Die Formatierung sollte dabei erhalten _ bleiben. Am rechten Rand der Tabelle soll außerdem eine dickere Rahmenlinie als Abschluss sein. Ich hab probiert, mir das mittels Makro irgendwie zurecht zu biegen, allerdings bekomme ich keine dicken Randlinien und die Sache mit dem automatisch erweitern bzw. rückgängig machen erst recht nicht :/ sieht bei mir so aus:

Sub Schaltjahr_Makro()
Dim ws As Worksheet
For Each ws In Worksheets(Array(2))
ws.Activate
Columns(Range("A3").End(xlToRight).Row + 1).Insert Shift:=xlToRight
Next
End Sub
Sub Schaltjahr_Makro2()
Dim ws As Worksheet
Dim Zelle As Range
For Each ws In Worksheets(Array(2))
ws.Activate
For Each Zelle In Range("AF:AF")
With Zelle
If .Value  "" Then
.EntireColumn.Delete
End If
End With
Next
Next
End Sub

Hier schiebt sich die Tabelle einfach nur nach rechts und die ersten beiden Eintragungen löschen den Inhalt :(
Was die Tabellennamen betrifft, wollte ich, wenn ich das Datum ändere, das sich die Reiter _
gleich mit aktualisieren, aber mit dem was ich im Internet gefunden habe

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
gehts nicht...
Danke schonmal für jede Hilfe^^
https://www.herber.de/bbs/user/91611.xlsm

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Urlaubsliste erstellen
21.07.2014 22:04:31
firmus
Hi Dominik,
ich habe Deine Schleifen auseinandergezogen und ganz trivales VBA geschrieben.
Es ist getestet und sollte nachvollziehbar sein.
Ergebnis:

Die Datei https://www.herber.de/bbs/user/91613.xlsm wurde aus Datenschutzgründen gelöscht


Habe leider keine Zeit mich weiter damit zu beschäftigen.
Gruß
Firmus

AW: Urlaubsliste erstellen
22.07.2014 08:41:13
Dominik
Hallo Firmus,
danke sieht echt super aus^^ Nur tut es bei mir noch nicht was es soll... Schade dass du keine Zeit mehr hast, ich denke ich hab noch ein allgemeines Problem. Wenn ich das Makro starte löscht es einfach nur die Spalte "AE" ohne Berücksichtigung auf die vordefinierten Schaltjahre. Die Tabellennamen ändern sich leider auch nicht. Gibt es abgesehen von den Sicherheitseinstellungen (die stehen bei mir schon auf "alle Makros aktivieren") noch irgendwelche Einstellungen auf die ich achten muss? Woran kann das liegen?
Gruß Dominik
https://www.herber.de/bbs/user/91615.xlsm

Anzeige
AW: Urlaubsliste erstellen
22.07.2014 13:30:43
firmus
Hi Dominik,
"a bissel was geht immer" - nur nicht zeitlich zuverlässig.
Auf ein Neues: https://www.herber.de/bbs/user/91628.xlsm
1. Die Tabellennamen ändern sich nicht:
Reden wir hier von den einzelnen Blättern in einem Workbook? (workbook ist die XLS-Datei)
Wie sollen die veränderten Blattnamen aussehen?
So arbeitet es heute:
Aus der Zelle A2 in Blatt 1 (Jan_2016) wird das Jahr extrahiert.
Mit diesem Jahr werden zwei Dinge gemacht:
a) die Blattnamen mit diesem Jahr umbenannt.
b) geprüft, ob dieses Jahr ein Schaltjahr ist. Falls NEIN, dann wird im Blatt "Feb_nnnn"
der 28. Februar (Spalte AE) gelöscht. Die Spalte AF (bisher 29.Feb) rutscht nach und wird
wegen der enthaltenen Formel zum neuen 28. Februar. Die Randformatierung bleibt erhalten.
Anmerkung:
Hatte bei der Schaltjahrabfrage True/False genau verkehrt angewandt - sorry.
Gruß
Firmus

Anzeige
AW: Urlaubsliste erstellen
22.07.2014 17:36:21
Dominik
Hi Firmus,
du bist der beste, lass dir ruhig Zeit das eilt net :P
Das mit den Tabellennamen hat so gestimmt wie du es gemacht hast, nur hat diese Funktion vorher einfach nicht funktioniert, jetzt gehts... fast. Er gibt mir jetzt allerdings nen Laufzeitfehler (1004) wenn ich das Jahr um 1 erhöhe. Das Problem ist der 2. Januar vom Folgejahr. Da das Makro die Blattnamen nach der Reihe abarbeitet, meckert er, dass er den Blattnamen nicht 2 mal vergeben kann.
Und nochwas, wenn ein 29. Februar vorhanden ist, löscht er den auch wie gewünscht, wenn danach kein Schaltjahr mehr ist. Aber er erzeugt auch keinen 29. mehr wenn Schaltjahr ist :/
Gruß Dominik

Anzeige
AW: Urlaubsliste erstellen
22.07.2014 22:12:33
firmus
Hi Dominik,


1. Blattnamen doppelt (1004)
Tatsächlich, das ist noch ein Fehler. Ich habe beim Jan des Folgejahres einen "." eingefügt.
damit wird dieses Problem vermieden. Es geht auch ohne Punkt aber wesentlich aufwendiger.
2. 29. Feb wird nicht erzeugt
Hier war die Annahme, dass JEDER Februar mit 29. Tagen vorgegeben ist. Deshalb wurde der
29. Feb nicht ergänzt. Aktuell wird je nach Bedarf gelöscht oder ergänzt.
jetzt sind 4 Fälle vorgesehen.
a. Schaltjahr, 29. Feb vorhanden
=> keine Aktivität
b. Schaltjahr, 29. Feb fehlt
=> 29. Feb wird ergänzt
c. KEIN Schaltjahr, 29. Feb vorhanden
=> 29. Feb wird gelöscht
d. KEIN Schaltjahr, 29. Feb fehlt
=> keine Aktivität
Probier's mal: https://www.herber.de/bbs/user/91649.xlsm

Gruß
Firmus
PS: VBA is spannender als der Tatort ; - )

Anzeige
AW: Urlaubsliste erstellen
23.07.2014 10:44:02
Dominik
Hi Firmus,
da geb ich dir absolut recht, VBA is wirklich extrem spannend, vielleicht besuch ich in Zukunft ja mal nen richtigen Kurs, dann häng ich auch net so in der Luft :D
Danke nochmal, aber noch ein zwei Dinge:
1. Ich bekomm einen Laufzeitfehler wenn ich zwischen einem Schaltjahr und keinem Schaltjahr hin und her springe. Der Abstand der Jahre dazwischen spielt keine Rolle (z.B. Sprung zw. 2015/2016 oder 2014/2020), passiert außerdem eher sporadisch mal früher mal später (bei mir bisher beim 2. - 4. mal).
Laufzeitfehler '-2147417848 (80010108)':
Automatisierungsfehler
Das aufgerufene Objekt wurde von den Clients getrennt

Danach hängt sich Excel manchmal auf oder die Spalte AF bleibt einfach dauerhaft angewählt. Wenn ich das Makro dann nochmal starten möchte:
Laufzeitfehler '7'
Nicht genügend Speicher

2. Du hast da so einen schönen Button in die Februar-Tabelle gesetzt, kann man den vielleicht in eine Message-Box integrieren oder Ähnliches? Mittels Private Sub, dass das automatisch aufpoppt wenn man das Jahr ändert^^? Nur wenns möglich ist, ansonsten such ich mir ne andere Lösung ;) Ursprünglich wollte ich das über nen Private Sub, der wiederum per Call das Makro aufruft, wenn sich das Datum der Januar-Tabelle ändert. Aber irgendwo in einem anderen Forum hab ich gelesen, dass das nicht möglich ist, weiß aber nicht warum...
Gruß Dominik

Anzeige
AW: Urlaubsliste erstellen
23.07.2014 22:35:51
firmus
Hi Dominik,
mit den returncodes kann ich nichts anfangen, da ich diese Erfahrung nie machte.
Tante Google sagt aber, dass hier ein Problem im Zusammenhang mit Windows bekannt ist.
Stichhaltige Lösungen habe ich keine gesehen.
Ich habe das Konzept nochmals etwas verändert.
Wenn Du den Editor startest, so wirst Du das Makro jetzt unter dem Tabellenblatt "Tabelle 1" finden.
Einfach "Tabelle 1" anklicken, rechte Maus: Code anzeigen.
Das Makro reagiert jetzt immer wenn in Blatt 1 in Zelle "A2" eine Veränderung gemacht wird.
Ein Prüfung auf ein gültiges Datum ist eingefügt, damit kein VBA-Abbruch passiert.

Die Datei https://www.herber.de/bbs/user/91691.xlsm wurde aus Datenschutzgründen gelöscht


Einfach mal probieren.
Gruß
Firmus
ps: Bei schrittweisem Test (F8) immer darauf achten, dass VOR dem nächsten Test das Makro beendet wird,
sonst reagiert es bei der nächsten Eingabe nicht. Im Normalbereich kann das nicht auftreten.

Anzeige
AW: Urlaubsliste erstellen
24.07.2014 11:55:09
Dominik
Hi Firmus,
DANKE!! Die Lösung an sich funktioniert perfekt! :D
Nur der Laufzeitfehler tritt bei mir leider immer noch auf. Ich hab auch ein bisschen gegoogelt und bin drauf gestoßen, dass Excel sich mit der ".Select"-Anweisung schwer tut, das ist ein Fehler seitens Microsoft. In meinem Fall im Abschnitt "29.Feb einfügen". Der Fehler tritt auch genau hier im Code auf:
If SJflag = True Then
If Sheets(2).Range("AF2") = "" Then
Sheets(2).Columns("AE:AE").Select
Selection.Copy
Sheets(2).Columns("AF:AF").Select
Selection.Insert Shift:=xlToRight _
b>
Application.CutCopyMode = False
With Range("AF2:AF36").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Sheets(2).Range("A2").Select
End If
End If
Das Problem liegt eindeutig beim Kopieren/Einfügen: Wenn ich "Selection.Insert" auskommentiere oder "Application.CutCopyMode" vor "Selection.Insert" ausführen lasse funktioniert es einwandfrei, allerdings wird dann eben auch nichts mehr kopiert... Kann man das Einfügen der neuen Spalte evtl. auch anders realisieren?
Danke für deine Zeit und Mühe ;)
Gruß Dominik

Anzeige
AW: Urlaubsliste erstellen
24.07.2014 13:44:38
Dominik
Ein letztes mal Hi,
ich habs hinbekommen, jetzt läufts flüssig ohne mucken^^ Der Abschnitt lautet jetzt:
If SJflag = True Then
If Sheets(2).Range("AF2") = "" Then
Sheets(2).Columns("AF:AF").Insert Shift:=xlToRight
Sheets(2).Range("AE:AF").FillRight
With Sheets(2).Range("AF2:AF36").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Sheets(2).Range("A2").Select
End If
End If
Riesiges Danke nochmal für deine Unterstützung Firmus!
Gruß Dominik
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige