Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1616to1620
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

Geburtstagsanzeige

Geburtstagsanzeige
23.03.2018 20:43:11
blangmantl
Hallo, kann mir jemand sagen, wie ein VBA Code aussehen muss, der folgendes bewirkt?
Nach jedem Neustart
der Tabelle, erscheint der Name des Geburtstagskind des Tages (falls
vorhanden).
Die Geburtstagskinder des Monats soll man erfahren bei(Aufruf mit den Tasten „Alt+F8“)
https://www.herber.de/bbs/user/120643.zip

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geburtstagsanzeige
24.03.2018 10:50:47
Beverly
Hi,
schau dir mal das Beispiel Geburtstag einfärben auf meiner HP, Seite Beispiele m. VBA an - vielleicht hilft dir das als Anregung weiter.


AW: Geburtstagsanzeige
24.03.2018 13:14:39
blangmantl
hallo Beverly,
leider reichen meine VBA Kenntnisse nicht so weit, kannst du mir nicht in beigefügter Tabelle das Makro einsetzen? Nochmal, die Einfärbungen möchte ich nicht, ich möchte nur bei Öffnen, dass er alle Geburtstage gerne auch per Usform mit Alter des Tages anzeigt. Gleichzeitig soll per Tastenkombination Alt+F8 alle Geburtstage in diesem Monat mit Alter angezeigt werden.
Danke und Gruß
Anzeige
AW: Geburtstagsanzeige
24.03.2018 13:51:57
Beverly
Hi,
diesen Code ins Codemodul DieseArbeitsmappe (wird beim Öffnen der Arbeitsmappe ausgeführt):
Private Sub Workbook_Open()
Dim daDatum As Date                     ' Variable für das Datum
Dim lngZeile As Long                    ' Variable für die Zeile
Dim strNamen As String                  ' Variable für die Namen
lngZeile = 4
With Worksheets("Mitgliederliste")
'       Schleife so lange durchlaufen bis in Spalte A eine Leerzelle vorhanden ist
Do Until IsEmpty(.Cells(lngZeile, 1))
'           Datum aus Spalte N auf die Variable schreiben
daDatum = .Cells(lngZeile, 14)
' Tag aus Spalte N & Monat aus Spalte N & Jahr(Heute) sind gleich aktuellem Datum
If CDate(Day(daDatum) & "." & Month(daDatum) & "." & Year(Date)) = Date Then
' Name und Vorname auf Variable schreiben
strNamen = strNamen & Cells(lngZeile, 3) & " " & .Cells(lngZeile, 4) & vbLf
End If
'           Zeilenvariable um 1 erhöhen
lngZeile = lngZeile + 1
Loop
End With
If strNamen  "" Then
'       es wurden Übereinstimmungen gefunden
MsgBox strNamen, vbInformation, "Heute haben Geburtstag:"
Else
'       es wurden keine Übereinstimmungen gefunden
MsgBox "", vbExclamation, "Heute liegt kein Geburtstag an!"
End If
End Sub

In einem Standardmodul:
Sub GeburtstagMonat()
Dim daDatum As Date                     ' Variable für das Datum
Dim lngZeile As Long                    ' Variable für die Zeile
Dim strNamen As String                  ' Variable für die Namen
lngZeile = 4
With Worksheets("Mitgliederliste")
'       Schleife so lange durchlaufen bis in Spalte A eine Leerzelle vorhanden ist
Do Until IsEmpty(.Cells(lngZeile, 1))
'           Datum aus Spalte N auf die Variable schreiben
daDatum = .Cells(lngZeile, 14)
' Monat des Datums in Spalte N = Monat vom aktuellem Datum
If Month(daDatum) = Month(Date) Then
' Name und Vorname auf Variable schreiben
strNamen = strNamen & Cells(lngZeile, 3) & " " & .Cells(lngZeile, 4) & vbLf
End If
'           Zeilenvariable um 1 erhöhen
lngZeile = lngZeile + 1
Loop
End With
If strNamen  "" Then
'       es wurden Übereinstimmungen gefunden
MsgBox strNamen, vbInformation, "Diesen Monat haben Geburtstag:"
Else
'       es wurden keine Übereinstimmungen gefunden
MsgBox "", vbExclamation, "Diesen Monat liegt kein Geburtstag an!"
End If
End Sub

Dieses Makro kannst du dann deiner Tastenkombination zuweisen.


Anzeige
AW: Geburtstagsanzeige
25.03.2018 19:50:36
blangmantl
hallo Beverly, erstmal danke funktioniert super, allerdings möchte ich dich um 3 kleine Modifikationen bitten.
1.) In dem Popup soll auch die Jahre angezeigt werden.
2.) die Mitglieder, die nicht mehr im Verein sind, also rot Dargestellt sind (könnte man über die Spalte R regeln, sollen bitte nicht berücksichtigt werden.
3.) Wenn in der Spalte kein Geburtsdatum steht, soll keine Fehlermeldung ausgegeben werden sondern einfach nicht beachtet werden.
Hier die Version, wo ich deine Makros eingebaut habe. Damit du siehst wie gut es funktioniert,
Danke dafür
https://www.herber.de/bbs/user/120666.zip
Anzeige
AW: Geburtstagsanzeige
25.03.2018 22:43:23
Beverly
Hi,
zu 1): was meinst du mit "Jahre anzeigen"? Welche Jahre?
zu 2) und 3): Sub GeburtstagMonat() wie folgt ergänzen
    With Worksheets("Mitgliederliste")
'       Schleife so lange durchlaufen bis in Spalte A eine Leerzelle vorhanden ist
Do Until IsEmpty(.Cells(lngZeile, 1))
' nur wenn Spalte R leer
If .Cells(lngZeile, 18) = "" Then
' Spalte N ist nicht leer
If .Cells(lngZeile, 14)  "" Then
' Datum aus Spalte N auf die Variable schreiben
daDatum = .Cells(lngZeile, 14)
' Monat des Datums in Spalte N = Monat vom aktuellem Datum
If Month(daDatum) = Month(Date) Then
' Name und Vorname auf Variable schreiben
strNamen = strNamen & Cells(lngZeile, 3) & " " & .Cells(lngZeile, 4) _
& vbLf
End If
End If
End If
'           Zeilenvariable um 1 erhöhen
lngZeile = lngZeile + 1
Loop
End With
Den Code im Workbook_Open nach dem selben Prinzip


Anzeige
AW: Geburtstagsanzeige
25.03.2018 19:51:02
blangmantl
hallo Beverly, erstmal danke funktioniert super, allerdings möchte ich dich um 3 kleine Modifikationen bitten.
1.) In dem Popup soll auch die Jahre angezeigt werden.
2.) die Mitglieder, die nicht mehr im Verein sind, also rot Dargestellt sind (könnte man über die Spalte R regeln, sollen bitte nicht berücksichtigt werden.
3.) Wenn in der Spalte kein Geburtsdatum steht, soll keine Fehlermeldung ausgegeben werden sondern einfach nicht beachtet werden.
Hier die Version, wo ich deine Makros eingebaut habe. Damit du siehst wie gut es funktioniert,
Danke dafür
https://www.herber.de/bbs/user/120666.zip
Anzeige
AW: Geburtstagsanzeige
25.03.2018 23:34:02
blangmantl
hallo Beverly, erstmal danke funktioniert super, allerdings möchte ich dich um 3 kleine Modifikationen bitten.
1.) In dem Popup soll auch die Jahre angezeigt werden.
2.) die Mitglieder, die nicht mehr im Verein sind, also rot Dargestellt sind (könnte man über die Spalte R regeln, sollen bitte nicht berücksichtigt werden.
3.) Wenn in der Spalte kein Geburtsdatum steht, soll keine Fehlermeldung ausgegeben werden sondern einfach nicht beachtet werden.
Hier die Version, wo ich deine Makros eingebaut habe. Damit du siehst wie gut es funktioniert,
Danke dafür
https://www.herber.de/bbs/user/120666.zip
Anzeige
Hast du die Codeergänzung schon getestet...
26.03.2018 08:46:11
Beverly
Hi,
...und wie lautet die Antwort auf meine Frage?


AW: Hast du die Codeergänzung schon getestet...
26.03.2018 12:04:10
blangmantl
Liebe Karin,
danke für die Codeergänzung, das funktioniert ganz gut, wenn ich das Makro aufrufe. Allerdings beim Popup, was beim öffnen der Tabelle angezeigt wird, haut es nicht hin, da werden ausgetretene Mitglieder angezeigt. Auch da soll diese Änderung greifen.
Mit Alter meine ich: Bisher wird angezeigt als Beispiel das Pop Up öffnet sich und der Name und Vorname wird angezeigt, Also zum Beispiel Diesen Monat haben Geburtstag: Mustermann Max
ich hätte es gerne abe so dass angezeigt wird, Diesen Monat haben Geburtstag: Mustermann Max 32 J.
Die Jahre werden ohnehin in der Tabelle berechnet und zwar in Spalte S (Alter)
Dieses bitte auch bei Ausführung des Makros und dem TagesPopUp. Wäre das Möglich
Danke im Voraus. Wenn du die aktuelle Version mit deiner Codeveränderung nochmal haben willst, habe ich angefügt.
https://www.herber.de/bbs/user/120674.zip
Anzeige
AW: Hast du die Codeergänzung schon getestet...
26.03.2018 13:15:44
Beverly
Hi,
ich hatte doch geschrieben, dass der Code im Wokbook_Open-Ereignis nach dem selben Prinzip wie in der Sub ergänzt werden muss - das hast du nicht gemacht, folglich musst du dich nicht wundern, dass beim Öffnen der Mappe die bereits ausgetretenen Mitglieder nach wie vor angezeigt werden...
Du meinst also nicht die Jahre sondern das Alter soll mit angezeigt werden.
Im Workbook_Open:
    With Worksheets("Mitgliederliste")
'       Schleife so lange durchlaufen bis in Spalte A eine Leerzelle vorhanden ist
Do Until IsEmpty(.Cells(lngZeile, 1))
' nur wenn Spalte R leer
If .Cells(lngZeile, 18) = "" Then
' Spalte N ist nicht leer
If .Cells(lngZeile, 14)  "" Then
' Datum aus Spalte N auf die Variable schreiben
daDatum = .Cells(lngZeile, 14)
' Tag aus Spalte N & Monat aus Spalte N & Jahr(Heute) = Datum
If CDate(Day(daDatum) & "." & Month(daDatum) & "." & Year(Date)) = _
Date Then
' Alter, Name und Vorname auf Variable schreiben
strNamen = strNamen & .Cells(lngZeile, 19).Text & vbTab & _
.Cells(lngZeile, 3) & " " & .Cells(lngZeile, 4) & vbLf
End If
End If
End If
'           Zeilenvariable um 1 erhöhen
lngZeile = lngZeile + 1
Loop
End With

In der Sub GeburtstagMonat():
    With Worksheets("Mitgliederliste")
'       Schleife so lange durchlaufen bis in Spalte A eine Leerzelle vorhanden ist
Do Until IsEmpty(.Cells(lngZeile, 1))
' nur wenn Spalte R leer
If .Cells(lngZeile, 18) = "" Then
' Spalte N ist nicht leer
If .Cells(lngZeile, 14)  "" Then
' Datum aus Spalte N auf die Variable schreiben
daDatum = .Cells(lngZeile, 14)
' Monat des Datums in Spalte N = Monat vom aktuellem Datum
If Month(daDatum) = Month(Date) Then
' Alter, Name und Vorname auf Variable schreiben
strNamen = strNamen & .Cells(lngZeile, 19).Text & vbTab & _
.Cells(lngZeile, 3) & " " & .Cells(lngZeile, 4) & vbLf
End If
End If
End If
'           Zeilenvariable um 1 erhöhen
lngZeile = lngZeile + 1
Loop
End With



Anzeige
AW: Hast du die Codeergänzung schon getestet...
26.03.2018 20:30:21
blangmantl
Liebe Karin,
danke hat wunderbar geklappt, Vielen Dank
Danke für die Rückmeldung - o.w.T.
26.03.2018 22:34:59
Beverly


AW: Danke für die Rückmeldung - o.w.T.
26.03.2018 23:46:53
blangmantl
Hallo Karin, eine kleine Modifikation, ist es möglich, beide Anzeigen soweit zu verändern, dass noch zusätzlich folgendes mit dazukommt? Er soll bei den Geburtstagskindern noch zusätzlich die Spalte V überprüfen, steht dort TSG soll die Anzeige so aussehen: 23 J Musterman Max TSG
bei Ehrenmitgliedern EM und bei allen anderen FR, wäre das noch möglich?
hier die aktuelle Version
https://www.herber.de/bbs/user/120687.zip
Anzeige
Codeerweiterung
27.03.2018 08:49:20
Beverly
Hi,
ändere den Code in der Sub GeburtstagMonat() wie folgt:
                    ' Monat des Datums in Spalte N = Monat vom aktuellem Datum
If Month(daDatum) = Month(Date) Then
' Alter, Name, Vorname, Status auf Variable schreiben
Select Case .Cells(lngZeile, 22)
Case "Ehrenmitglied"
strNamen = strNamen & .Cells(lngZeile, 19).Text & _
vbTab & .Cells(lngZeile, 3) & " " & _
.Cells(lngZeile, 4) & ", EM" & vbLf
Case "TSG"
strNamen = strNamen & .Cells(lngZeile, 19).Text & _
vbTab & .Cells(lngZeile, 3) & " " & _
.Cells(lngZeile, 4) & ", TSG" & vbLf
Case Else
strNamen = strNamen & .Cells(lngZeile, 19).Text & _
vbTab & .Cells(lngZeile, 3) & " " & _
.Cells(lngZeile, 4) & ", FR" & vbLf
End Select
End If

Dieselbe Select Case-Anweisung musst du ins Workbook_Open-Ereignis übernehmen (ab der Kommentarzeile ' Alter, Name, ... bis End Select)


AW: Codeerweiterung
27.03.2018 09:52:12
blangmantl
Hallo Karin,
das beim Modul funktioniert perfekt, danke dafür.
Beim Workbook open zeigt er mir jetzt eine Fehlermeldung an, habe ich da ein endif zu wenig? Ich setze den geänderten Code mal rein, bitte sehe mal drüber, was da verkehrt ist.
Private Sub Workbook_Open()
Dim daDatum As Date                     ' Variable für das Datum
Dim lngZeile As Long                    ' Variable für die Zeile
Dim strNamen As String                  ' Variable für die Namen
lngZeile = 4
With Worksheets("Mitgliederliste")
'       Schleife so lange durchlaufen bis in Spalte A eine Leerzelle vorhanden ist
Do Until IsEmpty(.Cells(lngZeile, 1))
' nur wenn Spalte R leer
If .Cells(lngZeile, 18) = "" Then
' Spalte N ist nicht leer
If .Cells(lngZeile, 14)  "" Then
' Datum aus Spalte N auf die Variable schreiben
daDatum = .Cells(lngZeile, 14)
' Tag aus Spalte N & Monat aus Spalte N & Jahr(Heute) = Datum
If CDate(Day(daDatum) & "." & Month(daDatum) & "." & Year(Date)) = _
Date Then
Monat des Datums in Spalte N = Monat vom aktuellem Datum
If Month(daDatum) = Month(Date) Then
' Alter, Name, Vorname, Status auf Variable schreiben
Select Case .Cells(lngZeile, 22)
Case "Ehrenmitglied"
strNamen = strNamen & .Cells(lngZeile, 19).Text & _
vbTab & .Cells(lngZeile, 3) & " " & _
.Cells(lngZeile, 4) & ", EM" & vbLf
Case "TSG"
strNamen = strNamen & .Cells(lngZeile, 19).Text & _
vbTab & .Cells(lngZeile, 3) & " " & _
.Cells(lngZeile, 4) & ", TSG" & vbLf
Case Else
strNamen = strNamen & .Cells(lngZeile, 19).Text & _
vbTab & .Cells(lngZeile, 3) & " " & _
.Cells(lngZeile, 4) & ", FR" & vbLf
End Select
End If
End If
End If
'           Zeilenvariable um 1 erhöhen
lngZeile = lngZeile + 1
Loop
End With
If strNamen  "" Then
'       es wurden Übereinstimmungen gefunden
MsgBox strNamen, vbInformation, "Heute haben Geburtstag:"
Else
'       es wurden keine Übereinstimmungen gefunden
MsgBox "", vbExclamation, "Heute liegt kein Geburtstag an!"
End If
End Sub

AW: Codeerweiterung
27.03.2018 10:06:16
Beverly
Hi,
die Codezeile vor If Month(daDatum) = Month(Date) Then ist eine einzige Zeile, da am Ende ein Unterstrich _ steht. Deshalb muss der gesamte Code If Month(daDatum) = Month(Date) Then bis einschließlich End If alles im einen Tab weiter eingerückt werden, dann siehst du, dass noch ein End If fehlt.
Außerdem fehlt am Beginn der Zeile Monat des Datums... ein Apostroph, damit diese Zeile als Kommentar gekennzeichnet ist.


AW: Codeerweiterung
27.03.2018 10:26:03
blangmantl
Hallo Karin,
Daumen hoch, jetzt funktioniert es einwandfrei, und ist jetzt perfekt, so wie ich es haben will.
Danke und Gruß
Benedikt
www.herber.de/forum/archiv/1612to1616/t1614790.htm
25.03.2018 08:16:12
lupo1
... ist übrigens Benedikts Ausgangsthread für seine Vereinsgeburtstage.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige