Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
388to392
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
388to392
388to392
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

MsgBox ausdrucken

MsgBox ausdrucken
02.03.2004 18:24:04
Franz W.
Hallo Fachleute,
unten stehender Monstercode dient lediglich der Erstellung einer MsgBox :-)).
Braucht keiner Durchfieseln, habe ihn nur gepostet, falls es wichtig sein
sollte, was da drin alles verwendet wird.
Mit dem Code werden mehrere Daten, die bestimmte Kriterien erfüllen, in
tabellarischer Form zusammengestellt und mit Zusatzinformationen in einer
MsgBox dargestellt.
Den Inhalt dieser MsgBox bräuchte ich nun aber auch auf Papier. Lässt sich das
in dieser Form auch in irgendein anderes Objekt reinschreiben , womit es
ausgedruckt werden kann?? Hat da jemand vielleicht eine Idee??

Sub alleUrlaube()
Set WshShell = CreateObject("WScript.Shell")
alleUrl = ""
clStart = Range("MonJanuar").Column
clJan = Range("MonJanuar").Columns.Count
clTotal = clJan * 12
Application.ScreenUpdating = False
Worksheets("Kalender").Activate
Worksheets("Kalender").Unprotect
For m = clStart To clTotal Step clJan                       ' Schleife für Monate
For t = 3 To 33                                         ' Schleife für Tage
If Cells(t, m + 10) <> "" _
And Cells(t - 1, m + 10) <> Cells(t, m + 10) Or IsNumeric(Cells(t - 1, m + 10)) _
And (Cells(t, m + 10) = "U" Or Cells(t, m + 10) = "UKi" Or Cells(t, m + 10) = "?") _
And Cells(t + 28, m - 1) <> "U" And Cells(t + 28, m - 1) <> "UKi" And Cells(t + 28, m - 1) <> "?" _
And Cells(t + 29, m - 1) <> "U" And Cells(t + 29, m - 1) <> "UKi" And Cells(t + 29, m - 1) <> "?" _
And Cells(t + 30, m - 1) <> "U" And Cells(t + 30, m - 1) <> "UKi" And Cells(t + 30, m - 1) <> "?" _
Then
If Cells(t, m + 10) <> Cells(t + 28, m - 1) _
And Cells(t, m + 10) <> Cells(t + 29, m - 1) _
And Cells(t, m + 10) <> Cells(t + 30, m - 1) _
Then
'## evtuelle Ferien einlesen:
If Cells(t, m + 4) <> "" Then
strFerien = "( " & Cells(t, m + 4) & " )    "
Else
strFerien = ""
End If
'## Aktivität des Urlaubes einlesen mit der Funktion "GetZeile1" von FP/herber.de:
UrlGrund = GetZeile1(Cells(t, m + 2))   '... dann nur die erste Zeile verwenden;
'## ersten Tag eines Urlaubes einlesen:
UrlAnfDat = Cells(t, m)
'## Ermittlung des letzten Tages des Urlaubes:
ssss = Cells(t, m).Address
clAnfDat = Range(ssss).Column
For mm = clAnfDat To clTotal Step clJan   ' Schleife für Monate, beginnend ab dem Monat, in dem der erste Tag liegt: "clAnfDat"
For tt = 3 To 33                      ' Schleife für Tage
If Cells(tt, mm) > UrlAnfDat Then
If Cells(tt, mm + 10) = "" Or Cells(tt, mm + 10) <> Cells(tt - 1, mm + 10) _
And Cells(tt, mm + 10) <> Cells(tt + 28, mm - 1) _
And Cells(tt, mm + 10) <> Cells(tt + 29, mm - 1) _
And Cells(tt, mm + 10) <> Cells(tt + 30, mm - 1) _
And Cells(tt - 1, mm + 10) <> "" Then
UrlEndDat = Cells(tt, mm) - 1
UrlEndDatFoundCheck = True
Exit For
End If
End If
Next
If UrlEndDatFoundCheck = True Then
UrlEndDatFoundCheck = False
Exit For
End If
Next
'## Anzahl der benötigten Urlaubstage:
UrlTage = ATC(UrlAnfDat, UrlEndDat, Range("Feiertage"))
'## Anzahl der Tage/Arbeitstage bis zum Urlaub:
If Not UrlAnfDat < Date Then    'ohne Abfrage Fehlermeldung bei vergangenen Urlauben
nochTage = UrlAnfDat - Date
Else
nochTage = 0
End If
nochArbTage = ATC(Date, UrlAnfDat, Range("Feiertage"))
'## zusammensetzen der Einzelteile eines Urlaubes:
If strFerien <> "" Then
If nochTage > 0 Then    'Wenn der Urlaub in der Zukunft, die Tage bis zum UrlBeginn schreiben
UrlTxt = Chr(13) & Cells(t, m + 10) & " (" & UrlTage & ")" & _
Chr(9) & UrlAnfDat & "  -  " & UrlEndDat & _
Chr(9) & strFerien & Chr(9) & UrlGrund & Chr(13) & _
Chr(9) & "in   " & nochTage & "  Tagen  " & "( Arbt.: " & nochArbTage & " )" & Chr(13)
Else
UrlTxt = Chr(13) & Cells(t, m + 10) & " (" & UrlTage & ")" & _
Chr(9) & UrlAnfDat & "  -  " & UrlEndDat & _
Chr(9) & strFerien & Chr(9) & UrlGrund & Chr(13)
End If
Else
If nochTage > 0 Then    'Wenn der Urlaub in der Zukunft, die Tage bis zum UrlBeginn schreiben
UrlTxt = Chr(13) & Cells(t, m + 10) & " (" & UrlTage & ")" & _
Chr(9) & UrlAnfDat & "  -  " & UrlEndDat & _
Chr(9) & Chr(9) & Chr(9) & UrlGrund & Chr(13) & _
Chr(9) & "in   " & nochTage & "  Tagen  " & "( Arbt.: " & nochArbTage & " )" & Chr(13)
Else
UrlTxt = Chr(13) & Cells(t, m + 10) & " (" & UrlTage & ")" & _
Chr(9) & UrlAnfDat & "  -  " & UrlEndDat & _
Chr(9) & Chr(9) & Chr(9) & UrlGrund & Chr(13)
End If
End If
'## einzelne Urlaube zeilenweise aneinander fügen:
alleUrl = alleUrl + UrlTxt
End If
End If
Next t
Next m
'## Sucht für Zelle "C12" das Datum des nächsten Urlaubs:
For m = clStart To clTotal Step clJan                       ' Schleife für Monate
For t = 3 To 33                                         ' Schleife für Tage
If Cells(t, m + 10) <> "" And Cells(t, m) > Date _
And Cells(t - 1, m + 10) = "" Or IsNumeric(Cells(t - 1, m + 10)) _
And (Cells(t, m + 10) = "U" Or Cells(t, m + 10) = "UKi" Or Cells(t, m + 10) = "?") _
And Cells(t + 28, m - 1) <> "U" And Cells(t + 28, m - 1) <> "UKi" And Cells(t + 28, m - 1) <> "?" _
And Cells(t + 29, m - 1) <> "U" And Cells(t + 29, m - 1) <> "UKi" And Cells(t + 29, m - 1) <> "?" _
And Cells(t + 30, m - 1) <> "U" And Cells(t + 30, m - 1) <> "UKi" And Cells(t + 30, m - 1) <> "?" _
Then
UrlAnfDat = Cells(t, m)
Range("UrlaubsDatum") = UrlAnfDat
UrlEndDatFoundCheck = True
Exit For
End If
Next
If UrlEndDatFoundCheck = True Then
UrlEndDatFoundCheck = False
Exit For
End If
Next
Application.ScreenUpdating = True
Worksheets("Kalender").Protect
'## Erstellen der Anfangszeilen der MsgBox:
GesUrl = Chr(13) & _
"Urlaubsplanung:" & Chr(9) & "Urlaubstage " & Chr(9) & [c10] & Chr(9) & "( ""U"", ""UKi"" )" & _
Chr(9) & Chr(9) & Format(Date, "dddd, dd. mmmm yyyy") & Chr(13) & _
Chr(9) & Chr(9) & "vielleicht noch " & Chr(9) & [c11] & Chr(9) & "( ""?"" )" & Chr(13) & _
Chr(9) & Chr(9) & Chr(9) & Chr(9) & "---" & Chr(13) & _
"benötigte Urlaubstage gesamt:" & Chr(9) & [c10] + [c11] & _
Chr(9) & "( maximaler Urlaub:  " & [c9] & " )" & Chr(13) & _
"----------------------------------------------------------------------------------------------------------------------------------                " & Chr(13)
'## Gesamttext für MsgBox zusammenstellen:
If alleUrl <> "" Then   ' wenn Urlaube im ausgewählten Jahr eingetragen:
intText = WshShell.Popup(GesUrl & alleUrl & Chr(13) & Chr(13) & _
"( In Klammern die Anzahl der jeweils benötigten Urlaubstage )" & Chr(13) & _
Chr(13), 50, "fwGesamturlaub", 4160)
Else                    ' wenn keine Urlaube im ausgewählten Jahr eingetragen:
intText = WshShell.Popup(GesUrl & _
"Für das Jahr   [ " & [a1] & " ]   ist kein Urlaub eingetragen." & Chr(13) & Chr(13), 50, "fwGesamturlaub", 4160)
End If
End Sub

Vielen Dank für Eure Hilfe schon mal im Voraus und Grüße
Franz

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MsgBox ausdrucken
02.03.2004 18:27:02
Alex K.
Hallo Franz,
eine Möglichkeit ist es, einen Hardcopy zu machen.
Eine andere wäre es, du legst ein Tabellenblatt an, schreibst die Daten formatiert in diese Tabelle, druckst diese aus und löscht dann das Blatt wieder. Der User muss das gar nicht mitbekommen, da du das Tabellenblatt über "Tabelle1.Visible = xlVeryHidden" verstecken kannst.
Bitte um Nachhilfe
02.03.2004 18:36:48
Franz W.
Hallo Alex,
vielen Dank, dass du dich meiner annimmst. Aber zu deinen beiden Vorschlägen bräuchte ich noch ein bisschen Nachhilfe:
- Hardcopy: meinst du damit "Drucktaste" - einfügen in Paint - dort ausdrucken? Diesen Umweg wollte ich mir gerne ersparen, wenn irgend möglich
- schreibst die Daten formatiert in diese Tabelle: das wäre schon eine Möglichkeit. Aber wie geht das ??? Direkt aus dem Code für die MsgBox raus? Oder wie kann ich die ermittelten Daten in ein neues Blatt schreiben??
Vielen Dank und Grüße
Franz
Anzeige
AW: Bitte um Nachhilfe
02.03.2004 18:42:17
Alex K.
Hallo Franz,
sorry, aber wer hat den das Makro erstellt und wieso stellst du "VBA gut" ein. Da mußte ich ja davon ausgehen, dass du dich mit VBA auskennst.
Du füllst Zellen in Excel über z.B.
Worksheets("Tabellenname").Range("A1").Value = "Urlaubstage".
Meine Idee ist es nun, die einzelnen Bausteine, welche in dem Makro für die MsgBox zusammengestellt werden, in verschiedene Zellen in das neu angelegte Tabellenblatt zu schreiben. D.h. parallel zur Erstellung der MsgBox werden die Daten in Zellen geschrieben.
AW: Bitte um Nachhilfe
02.03.2004 18:52:11
Franz W.
Hallo Alex,
das Makro hab ich schon selber erstellt. Und mit manchen wenigen Teilen von VBA kenn ich mich inzwischen so halbwegs aus. Darum wurde ich aus dem Forum hier immer wieder angehalten von "VBA = mäßig" auf "VBA = gut" zu wechseln. Aber es gibt halt doch noch ne ganze Menge zu lernen. Und häufig fehtl mir einfach die richtige Idee, und manchmal bin ich vielleicht einfach ein bissl begriffstutzig :-)))
So wie hier. Wie ich Werte in Zellen übertrage krieg ich schon hin. Hab nur deinen Vorschlag nicht ganz verstanden. Ob du meinst, dass das als Ganzes oder in Einzelteilen zu machen ist. Aber als Schnellspanner hab ich's jetzt :-))))))) Und so werd ich's auch machen!
Vielen Dank für deine Hilfe und Grüße
Franz
P.S.: und bleib mir bitte trotzdem gewogen :-)))
Anzeige
Alles klar, aber
02.03.2004 18:58:59
Alex K.
Hallo Franz,
über die Einstufung kann man geteilter Meinung sein. Ich nehme sie immer als Hinweis, um meine Antworten darauf abzustellen. Aber ist ja jetzt auch egal. Hauptsache, du weist, wie du dein Problem lösen kannst. Darauf kommt es an.
Viel Spass dabei :-)
Bis bald
Alex
Ja, ist klar mit dem Level
02.03.2004 19:05:11
Franz W.
Hallo Alex,
und häufig reichen mir ja die kurzen Hinweise auch. Wenn nicht werd ich halt weiterhin nachfragen...
Grüße
Franz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige