Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formatierung des Msgbox-Inhalts

Forumthread: Formatierung des Msgbox-Inhalts

Formatierung des Msgbox-Inhalts
Sibylle
Guten Abend,
ist es mit Excel 2010 möglich den Inhalt einer msgbox zu formatieren?
Beispiel: msgbox "Der berechnete Wert beträgt: " & betrag
Det Text soll zB kursiv, der Betrag in Schriftgröße 16, Schriftfarbe rot sein.
Gruß
Sibylle
Anzeige
Nein! o.T.
09.10.2011 18:42:23
Josef
« Gruß Sepp »

AW: Formatierung des Msgbox-Inhalts
09.10.2011 18:44:11
Hajo_Zi
Hallo Sibylle,
benutze eine UserForm.

Anzeige
Ich glaube nicht ...
09.10.2011 18:45:52
Matthias
Hallo
... aber ich weiß es nicht, da nur bis XL2007 vorhanden.
Du könntest alternativ ein Userform benutzen.
Dort 2 Labels einfügen und entsprechend in den Eigenschaften formatieren.
Ich habe Dir das mal als Demonstration erstellt.
https://www.herber.de/bbs/user/76921.xls
Gruß Matthias
Anzeige
AW: Ich glaube nicht ...
09.10.2011 19:11:55
Sibylle
Hallo Matthias,
genau so etwas suche ich, habe aber bisher Userforms nicht verwendet.
Der berechnete Wert 199,99 steht im Währungsformat in H16.
Kannst Du mir aufzeigen, wie ich zu Deiner Ausgabe komme?
Mit Einfügen Userform wird im Projekt-Explorer ein Fenster geöffnet mit einem Userform-Entwurf.
Der Entwurf scheint 3 Textfelder zu enthalten
a. Für den Text
b. Für den Wert
c. C für OK
Aber wie kommen die in die Form?
Die Tabelle selbst enthält eine Schaltfläche, die die Userform startet.
Es wäre schön, wenn ich auf diese Weise die Ausgabe formatieren könnte.
Gruß
Sibylle
Anzeige
Erklärungsversuch
09.10.2011 19:48:54
Matthias
Hallo
Es sind keine Textfelder, es sind 2 Labels (wie schon geschrieben)
Desweiteren ein Commandbutton und ein Frame
Alle Controls in einem Userform haben auch verschiedene Eigenschaften.
Dort stellst Du z.B bei Caption den Text ein der auf dem Label erscheinen soll.
Nicht alle Controls haben immer gleiche Eigenschaften!
siehe Bild: (aus XL2007)
Die Caption-Eigenschaft des Userform hier "Microsoft Excel"
Userbild
Ich hoffe ich konnte ein bisschen weiterhelfen.
hier mit Format:
https://www.herber.de/bbs/user/76923.xls
Gruß Matthias
Anzeige
AW: Erklärungsversuch
09.10.2011 22:38:03
Sibylle
Hallo Matthias,
vielen Dank für Deine Antwort. Dazu folgende Fragen:
Du schreibst:
es sind 2 Labels (wie schon geschrieben)
Desweiteren ein Commandbutton und ein Frame

Auf der Userform erkenne ich 2 labels, die einen konstanten Text aufnehmen und den Wert aus H16
Die Formatierung klappt inzwischen wie gewünscht.
Dann ein Commandbutton mit dessen Hilfe die Userform wieder ausgeblendet wird, aber wo ist der FRAME? Den kann ich nicht erkennen.
In der Tabelle ist ein Commandbutton mit Caption UFORM. Wird die Verbindung zwischen diesem CommandButton und der Userform automatisch durch einen kLICK hergestellt? (in der Bearbeitungszeile =Einbetten("Forms.CommandButton1";")
Gruß
Sibylle
Anzeige
Das Frame ist breiter als das UForm
10.10.2011 07:29:13
Matthias
Hallo Sibylle
Du hast es nicht erkannt, das das Frame breiter als das Userform ist
Im Frame sind dann die beiden Labels platziert
Das Commandbutton direkt auf dem Userform.
Userbild


Das Einfügen des Commandbutton auf die Tabelle erolgt nach diesem Schema:
Dazu wechselst Du auf Entwicklertools und dann wie im Bild dargestellt.
Userbild
Bitte denke daran, das ich nur in XL2007 darstellen kann und somit evtl. Abweichungen möglich sind.
Ich hoffe ich konnte ein wenig helfen.
Gruß Matthias
Anzeige
AW: Das Frame ist breiter als das UForm
10.10.2011 09:10:18
Sibylle
Hallo Matthias,
besten Dank für Deine Hilfen.
X Versuche führten bisher noch nicht zum Ziel.
Im Tabellenblatt wird der Wert in H16 ermittelt.
In das Tabellenblatt wurde ein Befehlsschaltflächensteuerelement aufgezogen.
Es erhielt von Excel den Namen CommandButton1 und in der Bearbeitungsleiste wurde eingetragen
=EINBETTEN("Forms.CommandButton.1";"").
WICHTIG VIELLEICHT:
Im VBA-Projekt unter Tabelle1 Worksheet erscheint kein Code für diesen CommandButton1
und es sind nur Eigenschaften für das Tabellenblatt einzustellen.
Im VBA-Projekt wurde eine Userform eingefügt, ein Frame aufgezogen, in diesen Frame label1 und label2 aufgezogen, unter dem Frame eine Befehlsschaltfläche mit Namen CommandButton1.
Der Code für label1 lautet:

Private Sub Label1_Click()
'Bei Caption wurde der Text     Der Endbetrag lautet eingetragen
End Sub

Code für Label2

Private Sub UserForm_Activate()
Labels2.Caption = Format(Range("H166"), "#,##0.00 €")
End Sub

Code für den CommandButton1 in der Userform

Private Sub CommandButton1_Click()
UnloadMe
End Sub
Als Versuch wurde zu guter letzt ins Worksheet folgender Code eingetragen

Private Sub CommandButton1()
UserForm1.Show
End Sub
Nun sollte man meinen dass es läuft, aber offensichtlich habe ich etwas übersehen.
Was mag das nur sein? Ein Klick auf den Button im Tabellenblatt bewirkt nichts, während es in Deinem Beispiel perfekt funktioniert.
Ich bin sehr gespannt ob Du mit diesen Angaben meinen Fehler finden wirst.
Gruß
Sibylle
Anzeige
AW: Das Frame ist breiter als das UForm
10.10.2011 09:50:14
Matthias
Hallo
Zitat
WICHTIG VIELLEICHT:
Im VBA-Projekt unter Tabelle1 Worksheet erscheint kein Code für diesen CommandButton1
und es sind nur Eigenschaften für das Tabellenblatt einzustellen
.
Wenn Du das Commandbutton neu in die Tabelle eingefügt hast, mach doch mal einen Doppelklick darauf.
Nun müßte sich das Fenster der Tabelle öffnen.
Dort steht nun eigentlich schon automatisch

Private Sub CommandButton1_Click()
End Sub
Zwischen Sub und End Sub schreibst Du nun den Code
UserForm1.Show
also so:

Private Sub CommandButton1_Click()
Userform1.Show
End Sub
Wenn Du nun aufs Button der Tabelle klickst wird das Formular geladen.
Das Formular muß natürlich auch UserForm1 heißen
Desweiteren heißt es Label2 und nicht Labels2.Caption (ohne s)
Und es heißt Unload Me nicht UnloadMe (also mit Leerzeichen)
Oder korrekterrweise auch Unload UserForm1.
Kannst Du damit was anfangen?
Gruß Matthias
Anzeige
Die Userform wird nun angezeigt ...
10.10.2011 10:24:20
Sibylle
Hallo Matthias,
und die Formatierung der Ausgabedaten ist auch korrekt.
Vielen Dank für Deine zahlreichen, sehr guten Hilfen.
Zwei Punkte sind noch offen:
a. Wie lässt sich der Name im CommandButton1 der Tabelle ändern?
b. Wenn nach dem Start eines Makros zuerst einige Berechnungen und Aktionen durchgeführt werden sollen wie ruft man dann die Userform auf?
Wird dann einfach im Makro eine Zeile eingefügt Userform1.show oder sind da weitere Punkte zu berücksichtigen?
Gruß
Sibylle
Anzeige
AW: Die Userform wird nun angezeigt ...
10.10.2011 10:31:27
Rudi
Hallo,
a: Im Entwurfsmodus Rechtsklickdrauf, Eigenschaften
b: Wird dann einfach im Makro eine Zeile eingefügt Userform1.show Korrekt. Zu beachten ist, dass das Makro angehalten wird, während die UF angezeigt wird.
Gruß
Rudi
Danke
10.10.2011 11:02:15
Sibylle
Hallo Erich,
auch Dir besten Dank für Deinen Beitrag. Ich freue mich, dass die gestellte Aufgabe gelöst ist.
Einen schönen Tag.
Gruß
Sibylle
Anzeige
Eigenschaft .Caption
10.10.2011 10:47:34
Matthias
Hallo
Zitat
a. Wie lässt sich der Name im CommandButton1 der Tabelle ändern?
Wirklich den Namen ändern also das Objekt soll nicht Commandbutton1 heißen,
oder willst Du die Eigenschaft .Caption also den Text auf der Schaltfläche ändern?
Ich tippe mal Du willst den Text auf der Schaltfläche ändern.
Userbild
Wechsel also zuerst in den Entwurfsmodus
Dann Rechtsklick auf Commandbutton1 und bei Caption neuen Text hinterlegen.
Oder Rechtsklick auf Commandbutton1 -> Befehlsschaltfläche-Objekt -> Bearbeiten
Neuen Text zuweisen-Fertig
zu b
Ja, einfach nach der Ausführung Deiner Berechnung
also vorletzte Zeile im Code UserForm1.Show
Die letzte Zeile ist dann End Sub
Gruß Matthias
Anzeige
Tausend Dank
10.10.2011 10:59:38
Sibylle
Hallo Matthias,
ein ganz dickes Danke schön für Deine zahlreichen guten Scrrenshots und Beschreibungen, die wesentlich dazu beigetragen haben, dass eine Einführung in Userforms als erfolgreich bezeichnet werden darf
In Zukunft werde ich Deine besonders anschaulichen Beiträge verfolgen, kann man doch sehr viel daraus lernen.
Als Test werde ich nun eine formatierte Inputbox gestalten als Übung. Es müsste klappen ...
I
Ich wünsche Dir einen schönen Tag und eine gute Woche.
Viele Grüße
Sibylle
Anzeige
AW: Tausend Dank
10.10.2011 12:40:44
Sibylle
Hallo Matthias,
mein Versuch eine formatierbare Eingabebox zu erstellen, ist kläglich gescheitert.
Es fehlt an Infos oder Denkfehler sind die Ursache.
Mein Ansatz
label1 erhält den Inhalt Bitte die und ist damit formatierbar
label3 erhält den Inhalt Zahl eingeben und ist damit formatierbar
Label2 erhält den Inhalt einer Variablen Vartext aus dem Makro und ist damit formatierbar.
For i = 1 to 5
vartext = i & ". "
userform1.show
-
-
next i
Problem1: wie bekonnt man den Inhalt der Variablen vartext in label2?
Problem2: wie kann man dann überhaupt einen Wert eingeben, der danach in einer Variablen des Makros landen soll?
Über einen Tipp würde ich mich sehr freuen.
Gruß
Sibylle
Anzeige
AW: Tausend Dank
10.10.2011 12:59:00
Rudi
Hallo,
Problem1:
With Userform1
.Label2=varText
.Show
End With
Problem2: Um einen Wert einzugeben, benutze eine Textbox, kein Label.
Gruß
Rudi
AW: Tausend Dank
10.10.2011 13:33:00
Sibylle
Hallo Rudi,
das klappt, aber
a. wie kommt der eingegebene Wert in die Variable y?
b. wird in diesem Fall ein Commandbutton zum Bestätigen oder Löschen der Userform benötigt?
Gruß
Sibylle
Anzeige
Userform
10.10.2011 14:06:16
Rudi
Hallo,
b: ist sinnvoll. Du muss ja die UF schließen
a: indem du ihn ausliest.
UF (Userform1) mit 1 Label(Label2), 1 Textbox(Textbox1) und 1 Commandbutton (Commandbutton1)
In ein Modul:

Sub Main()
Dim y, varText
varText = "Test"
UserForm1.Label2 = varText
UserForm1.Show
y = UserForm1.TextBox1
MsgBox y
End Sub
In der UF:

Private Sub CommandButton1_Click()
Me.Hide
End Sub
Gruß
Rudi
Anzeige
AW: Userform
10.10.2011 20:30:40
Sibylle
Hallo Erich,
ich danke Dir für Deinen Vorschlag, den ich aufgegriffen habe.
Inzwischen sieht der Code so aus:

Sub test()
Dim y As String
Dim varText As String
Dim z As Integer
For i = 1 To 3
varText = "Bitte eine Zahl eingeben"
UserForm1.Label2 = varText
UserForm1.TextBox1 = ""
UserForm1.Show
y = UserForm1.TextBox1
z = CInt(y)
summe = summe + z
Next i
MsgBox summe
End Sub
Was mich daran stört ist die Tatsache, dass bei der Eingabe eines Wertes zuerst in die Textbox geklickt werden muss und nicht direkt eine Zahl eingegeben werden kann.
Lässt sich dies verbessern?
Gruß
Sibylle
Anzeige
AW: Userform
10.10.2011 22:20:01
Rudi
Hallo,
wieso Erich? Der ist doch gar nicht an dem Thread beteiligt.
....
Userform1.Textbox1.Setfocus
Userform1.Show
...
Alternativ die Aktivierreihenfolge entsprechend festlegen (Rechtsklick auf die UF)
Gruß
Rudi
Danke
11.10.2011 07:48:51
Sibylle
Hallo Rudi,
vielen Dank für die ergänzenden Zeilen.
Gruß
Sibylle
Anzeige
bitte aber auch [i] und [summe] deklarieren oT
10.10.2011 23:29:25
Matthias
Danke
11.10.2011 07:51:15
Sibylle
Hallo Matthias,
ja, Du hast recht. Ist inzwischen geschehen.
Danke für Deine Hilfen
Gruß
Sibylle
;
Anzeige
Anzeige

Infobox / Tutorial

Formatierung des Msgbox-Inhalts in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Inhalt einer MsgBox in Excel VBA zu formatieren, gibt es einige Einschränkungen. Standardmäßig unterstützt die MsgBox keine direkte Formatierung wie Schriftgröße oder Farbe. Eine häufige Methode ist die Verwendung von UserForms. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. UserForm erstellen:

    • Gehe zu den Entwicklertools und klicke auf "UserForm einfügen".
    • Füge zwei Labels, einen CommandButton und ein Frame auf die UserForm ein.
  2. Labels formatieren:

    • Klicke auf jedes Label und ändere die Eigenschaften im Eigenschaftenfenster:
      • Label1: Setze den Text auf „Der berechnete Wert beträgt: “ und stelle die Schriftart auf kursiv.
      • Label2: Setze den Text auf den Wert, den du formatieren möchtest (z.B. aus einer Zelle).
  3. CommandButton hinzufügen:

    • Füge einen CommandButton hinzu, um die UserForm zu schließen.
  4. Code für die UserForm:

    • Gehe in den Code-Bereich der UserForm und füge den folgenden Code ein:
    Private Sub CommandButton1_Click()
        Unload Me
    End Sub
    
    Private Sub UserForm_Activate()
        Label2.Caption = Format(Range("H16").Value, "#,##0.00 €")
    End Sub
  5. UserForm anzeigen:

    • Füge in das Arbeitsblatt den folgenden Code ein, um die UserForm anzuzeigen:
    Private Sub CommandButton1_Click()
        UserForm1.Show
    End Sub

Häufige Fehler und Lösungen

  • Fehler bei der Anzeige der UserForm: Stelle sicher, dass der Name der UserForm korrekt ist (z.B. UserForm1).
  • Keine Verbindung zwischen CommandButton und UserForm: Überprüfe, ob der Code im richtigen Bereich (z.B. im Worksheet) geschrieben wurde.
  • Formatierung wird nicht angezeigt: Stelle sicher, dass der Code zur Formatierung im UserForm_Activate()-Ereignis steht.

Alternative Methoden

Wenn du die MsgBox formatieren möchtest, aber keine UserForms verwenden willst, kannst du folgende Alternativen in Betracht ziehen:

  • InputBox: Sie unterstützt keine Formatierung, ist aber eine einfache Möglichkeit, Werte abzufragen.
  • Access MsgBox: In Access gibt es Möglichkeiten, die MsgBox zu formatieren, die in Excel nicht verfügbar sind. Du könntest die Anwendung wechseln, wenn dies eine Option für dich ist.

Praktische Beispiele

Hier ist ein einfaches Beispiel für die Anzeige einer formatierten UserForm:

Sub ShowFormattedUserForm()
    UserForm1.Label1.Caption = "Der berechnete Wert beträgt:"
    UserForm1.Label2.Caption = Format(Range("H16").Value, "#,##0.00 €")
    UserForm1.Show
End Sub

Dieses Beispiel zeigt die Verwendung von Excel VBA, um den Wert aus Zelle H16 formatiert anzuzeigen.


Tipps für Profis

  • Verwende Frames: Frames helfen dabei, mehrere Steuerelemente zu gruppieren und die Benutzeroberfläche sauberer zu gestalten.
  • Füge zusätzliche Steuerelemente hinzu: Denk daran, Textboxen für Eingaben oder zusätzliche Buttons für erweiterten Funktionsumfang zu verwenden.
  • Setze den Fokus: Du kannst den Fokus auf die TextBox setzen, um die Benutzererfahrung zu verbessern:

    Private Sub UserForm_Activate()
        TextBox1.SetFocus
    End Sub

FAQ: Häufige Fragen

1. Kann ich die Schriftfarbe in einer MsgBox ändern? Leider ist das nicht möglich. Du kannst jedoch eine UserForm verwenden, um diese Funktionalität zu erreichen.

2. Wie kann ich den Text auf dem CommandButton ändern? Rechtsklicke auf den CommandButton im Entwurfsmodus und ändere die Caption-Eigenschaft.

3. Wird die UserForm angezeigt, wenn ich ein Makro starte? Ja, füge einfach UserForm1.Show nach den Berechnungen in deinem Makro hinzu. Die UserForm wird während der Ausführung des Makros angezeigt.

4. Wie kann ich den Wert aus einer TextBox in eine Variable speichern? Du kannst den Wert mit folgendem Code speichern:

Dim y As String
y = UserForm1.TextBox1.Value

5. Was sind die Vorteile von UserForms gegenüber MsgBox? UserForms bieten mehr Flexibilität, da sie die Formatierung und mehrere Steuerelemente unterstützen, während MsgBox sehr eingeschränkt ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige