MsgBox durch VBA in Excel 2010
#1
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
Top
#2
Hallo Kricki,

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

Gruß Peter
Top
#3
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 holst, musst du allerdings anpassen, denn alle können ja wohl nicht aus dem Blatt Planung kommen.

Gruß Peter
Top
#4
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
Code:
Sub M_snb()
    MsgBox Join(Filter([if(D7:T7-today()<100,D3:T3 & ":  noch " & D7:T7-today() & "  Tagen","")], " "), vbLf)
End Sub
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste