PopUp-Fenster in Excel erstellen

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

kann beiden bisherigen AW nur zustimmen. Was Du platzsparend machen kannst:
füge ober- oder unterhalb des Wertes zwei Zeilen ein, trage die Daten ein und die Differenzformel in Deine Zielzeile. Anschließend blendest Du die beiden Eingabespalten aus (am Zeilenkopf markieren, Kontextmenü "Ausblenden").
Je nach Anlage Deiner Datei kann das mit Spalten sinnvoller sein (wenn Deine Zeitergebnisse untereinander stehen, reichen insgesamt zwei Spalten, eingeblendet siehst du alle Einträge auf einmal, musst Du selbst sehen.
Es ginge auch ein etwas einfacheres Makro mit zwei Inputboxen nacheinander (die kann man nehmen wie vorgegeben, muss sie nicht extra gestalten), neuerdings soll sogar eine Funktion "Split" die Bestandteile einer einzigen Eingabe 8:45-10:30 oder so trennen können, ist aber überflüssiger Aufwand, weils einfach geht.
übrigens: zum Wiedereinblenden markierst Du die einschließenden Zeilen/Spalten, dann Kontextmenü "Einblenden".

Iamiam  28.01.2012, 11:38

"blendest Du die beiden Eingabespalten aus"
muss natürlich EingabeZEILEN heissen, war in Gedanken offensichtlich schon beim Folgenden...

0
Iamiam  29.01.2012, 13:51

mir ist noch eine Möglichkeit eingefallen:
Schreib in die Zelle die Formel (natürlich Deine Zeiten, die neuere zuerst):
="17.1.12 14:30"-"15.1.12 0:25"
und formatiere die Zelle mit dem benutzerdefinierten Format (Alt+t, z, z oder Strg+1 , Kategorie Benutzerdefiniert):
T"d" h:mm"h"
dann erscheint Dir die Zeitdifferenz in Tagen, h und min. Trägst Du beide Zeiten genau gleich ein, erscheint Dir in der Anzeige 0d 0:00h.
Diese Formel kannst Du auf alle gewünschten Zellen kopieren und bei Bedarf End- und Startzeit überschreiben.
Die Zeiten sind rechenbar. Das geht bis max.
31d 23:59h
(das entspricht 31.Jan. 23:59h)
Bei mehr wechselt die Anzeige auf 1.Feb. ff, aber Du siehst das wegen des Anzeigeformats nicht, Du müsstest dann auf das Format T.M. hh:mm oder T.M.JJJJ hh:mm wechseln, was natürlich per se als zB 3.2.1900 7:45 keine Zeitdifferenz darstellt, aber wegen des 1900 auffällig ist..
Rechenbar bleibt die Angabe trotzdem.

0
Iamiam  31.01.2012, 22:34
@Iamiam

danke für den *
Beim "Nachgrasen" entdeckt man immer wieder nochmal was: 1d ist hier natürlich 24h, nicht ein Arbeitstag! Willst Du das in Arbeitstagen, musst Du die tägliche Arbeitszeit (Wochendurchschnitt?) mit eingeben.
Müsste dann so ausschauen:
=Ganzzahl("17.1.12 14:30"-"15.1.12 0:25")*24/Tagesarbeitszeit)+ Rest(("17.1.12 14:30"-"15.1.12 0:25")*24;Tagesarbeitszeit)/24
erfordert also doppelte Eingabe. Da ist dann doch die erste Möglichkeit besser, die musst Du aber mit der analogen Formel auswerten.
Oder Du stellst alles als Stundenzahl dar, indem Du mit 24 multiplizierst, und als Anzeige irgendein Dezimalzahlenformat nimmst, ist vielleicht das einfachste und eindeutigste (auch zum Umrechnen in Lohn)!

0

In Excel-VBA ist das kein Problem.
Aber da wirst Dich schon ein wenig damit beschäftigen müssen, von alleine funktioniert das nicht.
Unter anderem notwendige Tätigkeiten/Vorschläge:
Eine Userform anlegen
Die gewünschten Felder kannst du mit dem VBA-Dialog auf der Userform anlegen
Dann mußt Du die UserForm aus der Tabelle heraus öffnen:

Sub UserForm_oeffnen()
    UserForm1.Show
End Sub

Schließlich mußt Du noch die Werte aus der Userform in Deine Tabelle übertragen. Z. B.:

Private Sub TextBox1_Change()
   Cells(1,1) = TextBox1
End Sub

Am besten nach den einzelnen Begrifen googlen, dann findest bestimmt jede menge Beispiele: z. B.: Excel VBA Userform

Welchen Effekt ausser "Cool aussehen" soll das haben? Ich glaube eher nicht, dass das mit VBA in Excel geht. Ich versteh nicht, warum du die Spalten so umständlich befüllen willst, das ist völlig uneffektiv und belastet die Performance von Excel. Zudem jeder Antivierenscanner beim Versenden per Mail Alarm schlagen wird...

nix für ungut

Robert

Innenleben 
Fragesteller
 27.01.2012, 09:25

Stimmt, da hast du Recht. Allerdings macht diese PopUp-Lösung das ganze übersichtlicher und "auf-eine-Seite-druckbar". Und ist das, der eigentliche Grund für diese Frage.

0