Clever-Excel-Forum

Normale Version: MsgBox durch VBA in Excel 2010
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moinsen,
Ich habe in einer Personalplanungstabelle eine Führerscheinablaufüberwachung eingerichtet.
In den Zellen D3:T3 stehen die Namen
in den Zellen D7:T7 stehen die berechneten Tage bis zum Ablauf der Gültigkeit.
Wenn die Tage aus D7:T7 unter 100 Tage fällt, soll eine MsgBox aufgehen und dies melden. " Führerschein von "Zelle z.B.D3" läuft in "z.B. D7" Tagen ab"
Ich habe folgenden Code, der auch funktioniert:

With Worksheet("Planung")
If AktiveSheet.Range ("D7").value < 0 then
MsgBox " Der Führerschein von " & " " & Range(" D3") .value & " " & ist seit " &" Range("D7")*-1 . value &" " & "Tagen abgelaufen.", vbInformation, "Führerscheinkontrolle"
ElseIf AktivSheet.Range ("D7").value < 100 then
MsgBox " Der Führerschein von " & " " & Range ("D3) . value & "läuft in"   & " " &  Range ("D7") . value & " " & Tagen ab. " vbinformation, Führerscheinkontrolle
End if

Soweit, so gut... aber.
Muss ich jetzt für jeden Mitarbeiter in der Liste eigene Boxen bauen, und müsste dann auch mehrmals bestätigen, wenn mehrere Füherscheine ablaufen oder kann ich alle Mitarbeiter in eienr MsgBox zusammenfassen?
Ich hoffe, dass meine Frage einigermaßen verständlich ist.

Vielen Dank fü die Mühe und viele Grüße von
   Kricki
Hallo Kricki,

sammel die Msg-Daten erstmal in einem Text, den du am Ender der Sammliung abfragst und dann als gesamtes ausgibst.

Gruß Peter
Hallo Kricki,

das war so gemeint.


PHP-Code:
Option Explicit

Public Sub Mit_Text()

Dim sText  As String

   With ThisWorkbook
.Worksheets("Planung")
 
     If .Range("D7").Value 0 Then
         
If sText "" Then
            sText 
"Der Führerschein von " " " Range("D3").Value " ist seit " Range("D7").Value " Tagen abgelaufen."
 
         Else
            sText 
sText vbLf "Der Führerschein von " " " Range("D3").Value " ist seit " Range("D7").Value " Tagen abgelaufen."
 
        End If
 
     ElseIf .Range("D7").Value 100 Then
         
If sText "" Then
            sText 
"Der Führerschein von " Range("D3").Value " läuft in " Range("D7").Value " Tagen ab."
 
         Else
            sText 
sText vbLf "Der Führerschein von " Range("D3").Value " läuft in " Range("D7").Value " Tagen ab."
 
        End If
 
     End If
 
  End With
   
   
If sText "" Then
      MsgBox 
"Es gibt keinen abgelaufenen Führeschein."vbInformation"Führerscheinkontrolle"
 
   Else
      MsgBox sText
vbInformation"Führerscheinkontrolle"
 
  End If
 
  
End Sub

Woher du 
die Daten holstmusst du allerdings anpassendenn alle können ja wohl nicht aus dem Blatt Planung kommen.

Gruß Peter 
Moin!
Ich werde nie verstehen, was in solchen Fällen MsgBoxes sollen …
Für so etwas gibt es die Sortierfunktion sowie (wenns es auch noch hübsch bunt sein soll) die bedingte Formatierung.
VBA ist etwas für Dinge, die nicht oder nur umständlich über die Standardfunktionalität zu erreichen ist.

Ist aber nur meine Meinung,
Gruß Ralf
Code:
Sub M_snb()
    MsgBox Join(Filter([if(D7:T7-today()<100,D3:T3 & ":  noch " & D7:T7-today() & "  Tagen","")], " "), vbLf)
End Sub