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

Geburtstagsliste

Geburtstagsliste
01.04.2016 19:50:03
Michael
Hallo an alle Experten für VBA, mal wieder brauch ich eure Hilfe.
Ich habe mir auf Youtube Ein Video zur Gestaltung einer Geburtstagsliste angeschaut und diesen Code in das von mir neu angelegte Modul "alter" kopiert, so wie es beschrieben war. Nun bekomme ich den Fehler: End if ohne Block
und "

Sub alter berechnen" wird gelb markiert.
Was ist falsch/mache ich falsch? Eigendlich sollte er mir doch die Spalten 21 und 22  berechnen  _
und entsprechend formatieren. Das Geburtstagsdatum steht in Spalte 4 der Tabelle1.
Würde mich über Hilfe sehr freuen.
Gruß Michael
Global alter(1 To 500), rtage(1 To 500), lzeile

Sub alter_berechnen()
lzeile = Sheets(1).UsedRange.Rows.Count + 1
For i = 2 To lzeile
anzmonate = DateDiff("m", Cells(i, 4), Date)
jahre = Split(antmonate / 12, ",")
restmonate = anzmonate - (jahre(0) * 12)
resttagedatum = Day(Cells(i, 4)) & "." & Month(Cells(i, 4)) & "." & Year(Date)
Resttage = DateDiff("d", Date, resttagedatum)
'If Resttage > 0 And Resttage  1 Then
Cells(i, 21) = jahre(0) & "Jahre" & restmonte & " Monate"
End If
If restmonate = 1 Then
Cells(i, 21) = jahre(0) & "Jahre" & restmonte & " Monat"
End If
If restmonate 

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geburtstagsliste
01.04.2016 20:00:17
Werner
Hallo Michael,
hier fehlt ein End If
If Resttage = 0 Then
Cells(i, 22) = "Heute"
alter(i) = CLng(Cells(i, 4))
rtage(i) = Resttage
End If
Next
Gruß Werner

AW: Geburtstagsliste
02.04.2016 17:18:03
Michael
Hallo Werner,vielen Dank das du mir mal wieder hilfst.
Ich bin soweit das alles berechnet wird.
Nur der erste If Befehl macht noch Probleme. Habe ihn ertmal überlesen und es klappt ohne diesen If Befehl.
Es ist der erte oben den ich überlesen lasse
Global alter(1 To 500), rtage(1 To 500), lzeile
Sub alter_berechnen()
lzeile = Sheets(1).UsedRange.Rows.Count + 1
For i = 2 To lzeile
anzmonate = DateDiff("m", Cells(i, 4), Date)
jahre = Split(anzmonate / 12, ",")
restmonate = anzmonate - (jahre(0) * 12)
resttagedatum = Day(Cells(i, 4)) & "." & Month(Cells(i, 4)) & "." & Year(Date)
resttage = DateDiff("d", Date, resttagedatum)
'If resttage > 0 And resttage  1 Then
Cells(i, 21) = jahre(0) & " Jahre & " & restmonate & " Monate"
End If
If restmonate = 1 Then
Cells(i, 21) = jahre(0) & " Jahre &" & restmonate & " Monat"
End If
If restmonate  1 Then
Cells(i, 22) = " noch " & resttage & " Tage"
End If
If resttage = 1 Then
Cells(i, 22) = " noch " & resttage & " Tag"
End If
If resttage = 0 Then
Cells(i, 22) = "Heute"
End If
alter(i) = CLng(Cells(i, 4))
rtage(i) = resttage
Next
For i = 21 To 22
Columns(i).AutoFit
Next
End Sub

Anzeige
AW: Geburtstagsliste
03.04.2016 09:49:52
Werner
Hallo Michael,
kann gerade nichts testen und auch nichts runter laden. Versuch es mal so:
If resttage > 0 Then
If resttage 
Ansonsten besser Datei mit ein paar Daten hier hochladen.
Gruß Werner

AW: Geburtstagsliste
03.04.2016 11:48:47
Werner
Hallo Michael,
im übrigen hast du hier einen Schreibfehler drin:
jahre = Split(antmonate / 12, ",")
müsste aber so lauten:
jahre = Split(anzmonate / 12, ",")
Gruß Werner

AW: Geburtstagsliste
04.04.2016 10:40:58
Michael
Hallo Werner, Datei habe ich hochgeladen.
Leider werden die Geburtstage nicht richtig in die Listbox geladen und gerne würde ich nur die nächsten 14 Gebuzrtstage laden.
Das If Problem von oben ist behoben!
Gruss Michael

Anzeige
AW: Geburtstagsliste
04.04.2016 11:03:56
Michael

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


AW: Geburtstagsliste
06.04.2016 11:52:52
Werner
Hallo Michael,
ich hatte jetzt Zeit mir das mal anzusehen.
Im Modul für das Errechnen des Alters habe ich mal alles sauber referenziert. Zudem ist in diesem Modul jetzt drin, dass die Daten für deine Geburtstagsliste in der UserForm zunächst mal in die Tabelle Geburtstag übertragen wird, anschließend wird das Blatt Geburtstag aufsteigend sortiert.
Zwei Sachen:
1. Du prüfst bei der Eingabe eines neuen Mitarbeiters, ob der Name in der Stammdatenliste bereits vorhanden ist. Was ist, wenn du bereits einen Mitarbeiter mit dem Namen Horst Müller hast und du einen neuen Mitarbeiter mit dem Namen Fritz Müller er fassen willst? Das habe ich dir aber schon einmal geschrieben. Ich würde eher die Liste mit den Personalnummern auf Doppelte prüfen. Ich denke zwei Mitarbeiter mit der selben Personalnummer sollte es wohl nicht geben.
2. Die Berechnung des Alters und der Geburtstage solltest du meiner Meinung nach auch in den Button für die Änderung an Mitarbeiterdaten einbauen. Rein theoretisch könnte es ja sein, dass bei der Ersterfassung versehentlich ein falsches Geburtsdatum eingetragen wurde. Deshalb sollte bei einer Änderung des Geburtsdatums die Routine für die Altersberechnung ebenfalls durchgeführt werden. Aber das kreigst du sicher selber hin, ist ja nur eine Zeile mit: Call alter_berechnen
Schau dir die Datei einmal an.
https://www.herber.de/bbs/user/104794.xlsm
Gruß Werner

Anzeige
AW: Geburtstagsliste
07.04.2016 22:11:56
Michael
Hallo Werner, vielen Dank erstmal für die Mühe! Ich habe deine Änderungen weitestgehend übernommen.Die Sortierung werde ich aber über eine separate Userform machen, denn ich habe der Listbox noch Jübiläum zugefügt uns möchte daher noch verschiedene Sortierung Möglichkeiten haben. Da ich noch nicht alle Personalnummern habe,habe ich die Überprüfung auf Vorhanden oder nicht noch auf Name gelassen,. Wird aber noch angepasstwenn alle Personnalnummern vorhanden sind. Nochmals vielen Dank für deine Hilfe. Gruß Michael

AW: Danke für die Rückmeldung. owT
07.04.2016 22:30:51
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige