Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1732to1736
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
VBA-Geburtstag alter berechnen
16.01.2020 22:58:47
feuerharry
Hallo
Habe ein Makro vom Netz, das mir das Alter ausrechnet.
Leider habe ich erst jetzt bemerkt, dass die Jahre zwischen 01.Feb. +15.Feb
um 1 Jahr zuwenig rechnet.
Und wenn kein GebDatum in Spalte M, dann sollte Spalte N + O leer sein.
Danke für eure Hilfe.
https://www.herber.de/bbs/user/134470.xlsm
LG feuerharry

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA-Geburtstag alter berechnen
17.01.2020 07:15:26
SH95
Hallo Feuerharry,
Global alter(1 To 15), rtage(1 To 15), lzeile
Sub alter_berechnen()
Application.ScreenUpdating = False
lzeile = Sheets(1).Range("B65536").End(xlUp).Row
For i = 3 To lzeile
anzmonate = DateDiff("m", Cells(i, 13), Date)
jahre = Split(anzmonate / 12, ",")
restmonate = anzmonate - (jahre(0) * 12)
resttagedatum = Day(Cells(i, 13)) & "." & Month(Cells(i, 13)) & "." & Year(Date)
resttage = DateDiff("d", Date, resttagedatum)
If Cells(i, 13)  "" Then
If resttage > 0 And resttage  1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monate"
End If
If restmonate = 1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monat"
End If
If restmonate  1 Then
Cells(i, 15) = "noch " & resttage & " Tage"
End If
If resttage = 1 Then
Cells(i, 15) = "noch " & resttage & " Tag"
End If
If resttage = 0 Then
Cells(i, 15) = "heute"
End If
Else
Cells(i, 14).Value = ""
Cells(i, 15).Value = ""
End If
'        alter(i) = CLng(Cells(i, 13))
'        rtage(i) = resttage
'        rtage(i) = resttage
Next
For i = 2 To 500
Columns(i).AutoFit
Next
UserForm1.ClearAll
Application.ScreenUpdating = True
End Sub
So?
Gruß
Stefan
Anzeige
AW: VBA-Geburtstag alter berechnen
17.01.2020 07:15:54
SH95
Hallo Feuerharry,
Global alter(1 To 15), rtage(1 To 15), lzeile
Sub alter_berechnen()
Application.ScreenUpdating = False
lzeile = Sheets(1).Range("B65536").End(xlUp).Row
For i = 3 To lzeile
anzmonate = DateDiff("m", Cells(i, 13), Date)
jahre = Split(anzmonate / 12, ",")
restmonate = anzmonate - (jahre(0) * 12)
resttagedatum = Day(Cells(i, 13)) & "." & Month(Cells(i, 13)) & "." & Year(Date)
resttage = DateDiff("d", Date, resttagedatum)
If Cells(i, 13)  "" Then
If resttage > 0 And resttage  1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monate"
End If
If restmonate = 1 Then
Cells(i, 14) = jahre(0) & " Jahre" '& restmonate & " Monat"
End If
If restmonate  1 Then
Cells(i, 15) = "noch " & resttage & " Tage"
End If
If resttage = 1 Then
Cells(i, 15) = "noch " & resttage & " Tag"
End If
If resttage = 0 Then
Cells(i, 15) = "heute"
End If
Else
Cells(i, 14).Value = ""
Cells(i, 15).Value = ""
End If
'        alter(i) = CLng(Cells(i, 13))
'        rtage(i) = resttage
'        rtage(i) = resttage
Next
For i = 2 To 500
Columns(i).AutoFit
Next
UserForm1.ClearAll
Application.ScreenUpdating = True
End Sub
So?
Gruß
Stefan
Anzeige
AW: VBA-Geburtstag alter berechnen
17.01.2020 10:06:01
feuerharry
Hy Stefan
Danke ich glaube es passt so, werde Testen.
Noch eine Frage:
was sagt die erste zeile aus
Global alter(1 To 15), rtage(1 To 15), lzeile
Danke LG feuerharry
Variablen
17.01.2020 10:55:55
SH95
Hallo Feuerharry,
damit deklarierst du deine Variablen.
gruß Stefan
AW: Variablen
17.01.2020 12:07:57
Torsten
Da stellt sich mir nur die Frage, wofuer diese Variablen (ausser lzeile) gut sind. Die werden im ganzen Code nirgends verwendet. Ausser in einem auskommentierten Teil.
Die 2. Frage fuer mich: Warum sind das globale Variablen fuer nur eine einzige Sub?
Eine VBA Programmierung wie diese verwirrt Anfaenger nur noch mehr, als sie schon verwirrt sind.
Sorry
Anzeige
AW: Variablen
17.01.2020 12:20:11
SH95
Hallo Torsten,
ich hab die Variablen nicht deklariert, sondern den bestehenden Code (wo sie schon deklariert waren) so verändert, dass es auf seine Anforderungen/Wünsche passt.
Ich hab mir aber nicht jede Codezeile/jedes Modul angesehen, ob/wo/wieso diese verwendet werden.
Sorry
AW: Variablen
17.01.2020 12:34:23
Torsten
Ah ok. Dann sage auch ich sorry. Hatte die Datei nicht gecheckt.
AW: Variablen
17.01.2020 13:47:08
feuerharry
Hy
Sorry melde mich wieder.
Habe jetzt ein Jahr kontrolliert, passt leider noch immer nicht
neue Testdatei hochgeladen.
https://www.herber.de/bbs/user/134486.xlsm
LG feuerharry
Anzeige
AW: Variablen
17.01.2020 13:56:52
SH95
Hallo nochmal, und im vorraus schonmal ein schönes Wochenende.
ich habs bei mir nochmal getestet und einen Fehler festgestellt:
Alte Code-Zeile:
For i = 3 To lzeile
Neue Zeile
For i = 2 To lzeile
Das ist die 5te Zeile von oben, er soll natürlich in Zeile 2 anfangen.
Ansonsten, hab ich das Programm mit mehreren Monats/JahresDaten getestet und bei mir gehts einwandfrei.
Gruß
Stefan
AW: Variablen
17.01.2020 14:49:57
feuerharry
Hy Stefan
Habe dein makro eingefügt, passt leider nicht.
dieses mal ab 18.Jän. müsste erst 19 Jahre sein
schau dir bitte die Datei noch einmal an. Danke
https://www.herber.de/bbs/user/134486.xlsm
LG feuerharry
Anzeige
AW: Variablen
19.01.2020 10:08:29
feuerharry
Hy Stefan
Jetzt passt es, was hast du geändert.
Ich seh es nicht oder überschaue es.
Recht herzlichen Dank für deine Mühe.
auf euch alle ist immer verlass.
VLG feuerharry
AW: Variablen
19.01.2020 11:20:47
Stefan
Hallo Feuerharry,
Ich hab bei der Abfrage (zweites If) ob die Resttage zwischen 0-31 sind, eingefügt, dasses auch der gleiche Monat sein muss.
Also Restmonat =0.
Somit wird das nur gerechnet und eingetragen, wenn es auch im gleichen Monat is.
Gruß
Stefan
Anzeige
AW: Variablen
19.01.2020 14:26:01
feuerharry
Hy
Sorry hätte noch 2 Bitten, ich weis ich das ich euch auf die Nerven gehe.
Programm läuft auf office 2010 32bit und office 2016 64bit
1. Bitte: Bei Datensatz neu speichern: keine doppelte ID bei neuen Datensatz ermöglichen
2: Bitte: Wenn möglich, Userform 1 Combobox 4 "Gruppe": Weitern Text in der Combobox 4 hinein schreiben, damit ich nicht in die Tabelle "Gruppe" Eintragen muss.
https://www.herber.de/bbs/user/134517.zip
Bitte, Bitte
LG feuerharry
AW: Variablen
20.01.2020 08:21:53
SH95
Hallo Feuerharry,
anbei ein Tipp, da dein Beitrag mittlerweile nichtmehr oben erscheint und es sich auch um ein anderes Problem handelt, würde ich für das nächste mal empfehlen, einen neuen Beitrag zu verfassen.
zu 1:
Ich hab mir das jetzt mal etwas intensiver angeschaut, dass mit der doppelten ID ist ja nicht möglich, wenn ich eine ID von Hand eintrage, wird ja schon überprüft, ob diese schon vorhanden ist. Ich hab jetzt noch hinzugefügt, dass bei jedem start der Userform die niedrigst nicht verwendete Id gesucht wird und dann in die Textbox17 geschrieben wird. Falls das nicht das ist was du wolltest, musst du einfach bei
UserForm activate
Call IDSuchen

Das "Call IDSuchen" rauslöschen.
zu 2:
du willst also deine Datenquelle der Combobox4 erweitern/abändern, hab ich das richtig verstanden?
Dann würde ich (Falls du nicht auf die Tabelle zugreifen willst) eine extra UserForm machen und diese dann abspeichern lassen.
Ich hoffe ich hab alles richtig verstanden, das wäre meine Lösung:
Die UserForm für die Datenänderung wird mit doppelklick auf das Label("Geburtstag") gestartet, verschönern bzw ausfeilen musst es dann noch selber.
https://www.herber.de/bbs/user/134541.zip
Gruß
Stefan
Ps. bei deinem nächsten VBA-Projekt würde ich dir empfehlen, die UserFormen/Comboboxen/etc. zu beschriften z.b. UserForm_Start/Combobox_Gruppe
das macht es sowohl dir im weiteren Code einfacher den Überblick zu behalten, als auch deinen Helfern.
Anzeige

75 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige