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

Verschiedene Jubiläen in einer MsgBox anzeigen

Verschiedene Jubiläen in einer MsgBox anzeigen
25.09.2008 22:41:00
Steffan
Hallo ihr Lieben,
ich habe eine Mitgliederliste, in der ich eine Geburtstagsabfrage habe. Das funzt prima. Nun wollte ich diese Abfrage um die Jubiläen der Vereinszugehörigkeit ergänzen. Das hat für ein Jubiläum (10 Jahre) auch geklappt, da ich nur die Formeln der Geburtstagsabfrage angepasst habe. Wenn ich aber nun die anderen Jubiläen (20,25,30,40 und 50 Jahre) ebenfalls hinten dran hänge, muss ich mich bei dem Makro durch eine Unzahl von MsgBoxen klicken. Wie kriege ich die anstehenden Jubiläen (also alle 6 möglichen) der jeweils nächsten 31 Tage in einer einzigen Box angezeigt? Klappt doch bei den Geburtstagen auch?
Hier hab ich noch den Code, den ich bisher geschrieben habe (ich hab bei 20 Jahre aufgehört, weil ich den Fehler bemerkt hab):

Private Sub Workbook_Open()
Dim sMldg1 As String, sMldg2 As String, lR As Long, iDiff As Integer
Dim sMldg3 As String, sMldg4 As String, iDiff1 As Integer
Const iVn As Integer = 3   ' Spalte C - Vornamen
Const iNn As Integer = 2   ' Spalte D - Nachnamen
Const iG As Integer = 7    ' Spalte H - Geburtstage
Const iEin As Integer = 8  ' Spalte I - Eintrittsdatum
Jub1 = 10    ' 10-jähriges Jubiläum
Jub2 = 20    ' 20-jähriges Jubiläum
Jub3 = 25    ' 25-jähriges Jubiläum
Jub4 = 30    ' 30-jähriges Jubiläum
Jub5 = 40    ' 40-jähriges Jubiläum
Jub6 = 50    ' 50-jähriges Jubiläum
ActiveSheet.Protect Password:=""
Beep
' Überprüfung auf Geburtstage (dieses Makro hab ich hier im Forum gefunden)
sMldg1 = "Geburtstage:" & vbLf
lR = 2
Do Until IsEmpty(Cells(lR, iVn))
iDiff = DateSerial(Year(Date), Month(Cells(lR, iG)), Day(Cells(lR, iG))) - Date
If iDiff  "" Then
MsgBox "Geburtstage in den nächsten 31 Tagen:" & vbLf & sMldg2, , "Vorschau"
Else
MsgBox "Keine Geburtstage in den nächsten 31 Tagen!", , "Info"
End If
End If
' Überprüfung auf 10-jähriges Jubiläum
sMldg3 = "Jubiläum:" & vbLf
lR = 2
Do Until IsEmpty(Cells(lR, iVn))
iDiff1 = DateSerial(Year(Cells(lR, iEin)) + Jub1, Month(Cells(lR, iEin)), Day(Cells(lR,   _
_
iEin))) - Date
If iDiff1  "" Then
MsgBox "Jubiläen in den nächsten 31 Tagen:" & vbLf & sMldg4, , "Vorschau"
Else
MsgBox "Keine Jubiläen in den nächsten 31 Tagen!", , "Info"
End If
End If
' Überprüfung auf 20-jähriges Jubiläum
sMldg5 = "Jubiläum:" & vbLf
lR = 2
Do Until IsEmpty(Cells(lR, iVn))
iDiff2 = DateSerial(Year(Cells(lR, iEin)) + Jub2, Month(Cells(lR, iEin)), Day(Cells(lR,   _
_
iEin))) - Date
If iDiff2  "" Then
MsgBox "Jubiläen in den nächsten 31 Tagen:" & vbLf & sMldg6, , "Vorschau"
Else
MsgBox "Keine Jubiläen in den nächsten 31 Tagen!", , "Info"
End If
End If
End Sub


4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschiedene Jubiläen in einer MsgBox anzeigen
26.09.2008 11:32:00
fcs
Hallo Stefan,
schreibe die Jubiläen in eine Arrayvariable, dann kann man diese in einer Schleife prüfen und problemlos die Ausgabe in einer MsgBox machen.
Nachfolgend ungetestet die Anpassungen an deinem Code.
Gruß
Franz

Private Sub Workbook_Open()
Dim sMldg1 As String, sMldg2 As String, lR As Long, iDiff As Integer
Dim sMldg3 As String, sMldg4 As String, iDiff1 As Integer
Dim arrJub(1 To 6) As Integer, intI As Integer
Const iVn As Integer = 3   ' Spalte C - Vornamen
Const iNn As Integer = 2   ' Spalte D - Nachnamen
Const iG As Integer = 7    ' Spalte H - Geburtstage
Const iEin As Integer = 8  ' Spalte I - Eintrittsdatum
arrJub(1) = 10    ' 10-jähriges Jubiläum
arrJub(2) = 20    ' 20-jähriges Jubiläum
arrJub(3) = 25    ' 25-jähriges Jubiläum
arrJub(4) = 30    ' 30-jähriges Jubiläum
arrJub(5) = 40    ' 40-jähriges Jubiläum
arrJub(6) = 50    ' 50-jähriges Jubiläum
ActiveSheet.Protect Password:=""
Beep
' Überprüfung auf Geburtstage (dieses Makro hab ich hier im Forum gefunden)
sMldg1 = "Geburtstage:" & vbLf
lR = 2
Do Until IsEmpty(Cells(lR, iVn))
iDiff = DateSerial(Year(Date), Month(Cells(lR, iG)), Day(Cells(lR, iG))) - Date
If iDiff  "" Then
MsgBox "Geburtstage in den nächsten 31 Tagen:" & vbLf & sMldg2, , "Vorschau"
Else
MsgBox "Keine Geburtstage in den nächsten 31 Tagen!", , "Info"
End If
End If
' Überprüfung auf  Jubiläen
sMldg3 = "Jubiläum:" & vbLf
lR = 2
Do Until IsEmpty(Cells(lR, iVn))
For intI = LBound(arrJub) To UBound(arrJub)
iDiff1 = DateSerial(Year(Cells(lR, iEin)) + arrJub(intI), Month(Cells(lR, iEin)), _
Day(Cells(lR, iEin))) - Date
If iDiff1  "" Then
MsgBox "Jubiläen in den nächsten 31 Tagen:" & vbLf & sMldg4, , "Vorschau"
Else
MsgBox "Keine Jubiläen in den nächsten 31 Tagen!", , "Info"
End If
End If
End Sub


Anzeige
AW: Verschiedene Jubiläen in einer MsgBox anzeigen
26.09.2008 18:46:28
Steffan
Hallo Franz,
super, genau das, was ich brauchte. Da ich mich mit Array Variablen aber nicht auskenne, erklär mir doch bitte was die Zeile:
For intI = LBound(arrJub) To UBound(arrJub)
bedeutet und bewirkt.
Noch mal vielen Dank für deine Mühe und einen lieben Gruß,
Steffan
AW: Verschiedene Jubiläen in einer MsgBox anzeigen
29.09.2008 11:08:53
fcs
Hallo Stefan,
in der Variablen-Deklaration
Dim arrJub(1 To 6) As Integer
werden die untere und obere Grenzen für die Array-Größe festgelegt.
In der Zeile
For intI = LBound(arrJub) To UBound(arrJub)
ist LBound(arrJub) der untere Wert der Arraygröße, hier also 1
und UBound(arrJub) der obere Wert der Arraygröße, hier also 6
Der Vorteil, die Schleifenzähler auf diese Art zu setzen, besteht darin, dass du für ein weiteres Jubiläum "nur" die Dimension des Arrays anpassen und einen weiteren Wert zuweisen muss. Der Schleifenzähler passt sich automatisch an.
Gruß
Franz
Anzeige
AW: Verschiedene Jubiläen in einer MsgBox anzeigen
29.09.2008 14:45:00
Steffan
Hallo Franz, danke für diese Erklärung. Das macht die ganze Routine viel verständlicher. Ich werde noch zum VBA Profi (so in 20-30 Jahren). ;-)
Gruß, Steffan

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige