Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Werte in Msgbox rechtsbündig ausgeben
#1
Hallo!

Ich lasse mir in einer Msgbox Werte untereinander anzeigen. Nachdem diese Werte unterschiedlich lang sind, will ich sie nicht wie standardmäßig linksbündig angezeigt bekommen, sondern rechtsbündig. Ist so etwas überhaupt möglich?
Anbei mein VBA Code:

Code:
Sub JahresstatistikRanking()

    With ThisWorkbook.Worksheets("Jahresstatistik")

    Dim i, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
        Dim Z1 As Integer, LR As Integer, RNG As Range
     
        Z1 = 3 'Erste Datenzeile
        Sp = 7 'Werte in G
     
        LR = Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
        Set RNG = Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
     
        For i = 1 To 8
            WWert = WorksheetFunction.Large(RNG, i)
            Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
            TText = TText & Format(Cells(Zeile, 1), "YYYY: ") & " € " & Format(WWert, "#,##0.00") & vbLf
        Next
        MsgBox "Top 8 (berechnet bis Jahresende)" & vbLf & vbLf & TText & String(2, vbNewLine) & _
        "Top 8 (berechnet bis " & Date & ")"
   
    End With

End Sub



Ich hoffe, dass mir jemand helfen kann.

LG
Thomas
Excel Version 2016
Antworten Top
#2
Hi,

eine rechtsbündige Ausgabe ist in der Msgbox nicht vorgesehen. Da müsstest Du Dir schon selbst eine basteln, mit einer Textbox z. Bsp.
Ansonsten könntest Du aber mit Tabulatoren arbeiten. Bsp. für die Schleife, indem Du am Anfang oder Ende der Zuweisung von TText noch ein oder mehrere
& vbtab ergänzt. (ungetestet) Dann sähe es zumindest wie eine Auflistung aus.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#3
(31.10.2022, 10:06)Ralf A schrieb: Hi,

eine rechtsbündige Ausgabe ist in der Msgbox nicht vorgesehen. Da müsstest Du Dir schon selbst eine basteln, mit einer Textbox z. Bsp.
Ansonsten könntest Du aber mit Tabulatoren arbeiten. Bsp. für die Schleife, indem Du am Anfang oder Ende der Zuweisung von TText noch ein oder mehrere
& vbtab ergänzt. (ungetestet) Dann sähe es zumindest wie eine Auflistung aus.

Hallo!

Danke für die rasche Antwort. Ich habe es soeben mit "vbtab " probiert, bringt mir aber nichts, er rückt einfach alle um einen Tab Sprung weiter nach rechts.
Die Lösung mit einer Textblox klingt wieder sehr aufwendig.
Excel Version 2016
Antworten Top
#4
VBA ist nichts für Faulpelze.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
(31.10.2022, 10:09)dertommy schrieb: Die Lösung mit einer Textblox klingt wieder sehr aufwendig.

...tja... dann musst Du mit dem leben, was da ist...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#6
Hallo Thomas,

vielleicht so?

Code:
Sub JahresstatistikRanking()
  Dim i As Long, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
  Dim Z1 As Integer, LR As Integer, RNG As Range
  Dim strZL As String, strZR As String
       
  With ThisWorkbook.Worksheets("Jahresstatistik")
 
    Z1 = 3 'Erste Datenzeile
    Sp = 7 'Werte in G
 
    LR = .Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
    Set RNG = .Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
 
    For i = 1 To 8
        WWert = WorksheetFunction.Large(RNG, i)
        Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
        strZL = Format(.Cells(Zeile, 1), "YYYY: ")
        strZR = " € " & Format(WWert, "#,##0.00")
        TText = TText & strZL & String(15 - Len(strZR), "_") & strZR & vbLf
    Next
    MsgBox "Top 8 (berechnet bis Jahresende)" & vbLf & vbLf & TText & String(2, vbNewLine) & _
    "Top 8 (berechnet bis " & Date & ")"
   
  End With
End Sub
Antworten Top
#7
(31.10.2022, 11:45)Kuwer schrieb: Hallo Thomas,

vielleicht so?

Code:
Sub JahresstatistikRanking()
  Dim i As Long, WWert As Double, TText As String, Zeile As Integer, Sp As Integer
  Dim Z1 As Integer, LR As Integer, RNG As Range
  Dim strZL As String, strZR As String
       
  With ThisWorkbook.Worksheets("Jahresstatistik")
 
    Z1 = 3 'Erste Datenzeile
    Sp = 7 'Werte in G
 
    LR = .Cells(Rows.Count, Sp).End(xlUp).Row 'letzte Zeile der Spalte
    Set RNG = .Cells(Z1, Sp).Resize(LR + Z1 + 1, 1)
 
    For i = 1 To 8
        WWert = WorksheetFunction.Large(RNG, i)
        Zeile = WorksheetFunction.Match(WWert, RNG, 0) + Z1 - 1
        strZL = Format(.Cells(Zeile, 1), "YYYY: ")
        strZR = " € " & Format(WWert, "#,##0.00")
        TText = TText & strZL & String(15 - Len(strZR), "_") & strZR & vbLf
    Next
    MsgBox "Top 8 (berechnet bis Jahresende)" & vbLf & vbLf & TText & String(2, vbNewLine) & _
    "Top 8 (berechnet bis " & Date & ")"
  
  End With
End Sub

Hallo!

Danke für die rasche Hilfe.
Im Prinzip ist es genau das, was ich gewollt habe. Nur hätte ich gerne nicht zwischen dem Datum und den Werten ein "_" ausgefüllt, weil es nicht gut aussieht. Wie es bei mir genau aussieht, habe ich dir als Dateianhang mitgeschickt.
Wenn ich statt "_" ein " " mache, ist es wieder nicht ganz genau unter einander, aber besser als vorher.
Ich hoffe, dass du mir nochmals helfen kannst.


Angehängte Dateien Thumbnail(s)
   
Excel Version 2016
Antworten Top
#8
Hallo,

probiere es mal mit Chr(2). Ist dann nicht ganz so schön ausgerichtet, sobald Tausenderpunkte ins Spiel kommen.

Gruß Uwe
Antworten Top
#9
(31.10.2022, 13:30)Kuwer schrieb: Hallo,

probiere es mal mit Chr(2). Ist dann nicht ganz so schön ausgerichtet, sobald Tausenderpunkte ins Spiel kommen.

Gruß Uwe

Wie meinst du das mit Chr(2)?
Wo genau soll ich das statt welchem Code einfügen?
Excel Version 2016
Antworten Top
#10
An Stelle von "_" .
Antworten Top


Gehe zu:


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