Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird das Formatieren von Zeichenfolgen nach rechtsbündig erläutert, wenn eine Anwendung das Drucken aufruft.
Originalproduktversion: Visual Basic
Ursprüngliche KB-Nummer: 217012
Zusammenfassung
Es gibt verschiedene Möglichkeiten, Zeichenfolgen mit der Format-Funktion nach rechts zu rechtfertigen:
Verwenden Sie das
@Zeichen.Sie verwenden die Funktion
RSet.Verwenden Sie Problemumgehungen mit der
Format$Funktion.
Verwenden des @-Zeichens
Notiz
Diese Technik ist nur bei monospace Schriftarten wirksam, z Courier New. B. .
Formatieren Sie die Zahl in eine Zeichenfolge mit numerischen Konvertierungszeichen, z. B. $##0,00.
Formatieren Sie die resultierende Zeichenfolge mit einer Formatzeichenfolge, die aus einer Anzahl von @ Zeichen besteht, die der Länge des gewünschten Formats entsprechen, z. B. @@@@@@@.
Im folgenden Codebeispiel werden mehrere Zahlen mit sieben @ Zeichen und einem sieben Zeichenformat ( $##0,00) formatiert.
Print "|" & Format$(Format$(1.5, "$##0.00"), "@@@@@@@") & "|"
Print "|" & Format$(Format$(12.5, "$##0.00"), "@@@@@@@") & "|"
Print "|" & Format$(Format$(123.5, "$##0.00"), "@@@@@@@") & "|"
Die Ausgabe lautet;
| $1.50|
| $12.50|
|$123.50|
Verwenden der RSet-Funktion
Bei Verwendung in Verbindung mit RSetder Formatfunktion funktioniert die Formatfunktion für Zeichenfolgen mit fester Länge. Das folgende Codebeispiel veranschaulicht die Verwendung von RSet:
x = (Format$(123.5, "$##0.00"))
Print "x" & x & "x"
RSet x = (Format$(1.5, "$##0.00"))
Print "x" & x & "x"
Die Ausgabe lautet:
x$123.50x
x $1.50x
Problemumgehungen mit der Format$-Funktion
Notiz
Diese Techniken sind nur mit monospace Schriftarten effektiv, z Courier New. B. .
Die Format$-Funktion rechtfertigt keine Zeichenfolgen, wenn sie mit dem Symbol "#" verwendet werden. Im ersten Codebeispiel wird die Funktion Len verwendet, um zu bestimmen, wie viele Leerzeichen links neben der Zeichenfolge hinzugefügt werden müssen, die die Zahl darstellt, um die Zeichenfolge nach rechts zu rechtfertigen:
required = 8 ' longest number expected
a = 1.23
b = 44.56
num1$ = Format$(a, "#0.00")' this converts the number to a string
num2$ = Format$(b, "#0.00")' with 2 decimal places and a leading zero
'Debug.Print num2$
If (required - Len(num1$)) > 0 Then
num1$ = Space$(required - Len(num1$)) + num1$
End If
If (required - Len(num2$)) > 0 Then
num2$ = Space$(required - Len(num2$)) + num2$
End If
' test output
Print num1$
Print num2$
Die Ausgabe lautet:
1.23
44.56
Das zweite Format$-Beispiel wird mit der Erlaubnis des Autors Karl Peterson gedruckt. Seine LPad-Funktion verwendet die Right$-Funktion:
Private Function LPad(ValIn As Variant, nDec As Integer, _
WidthOut As Integer) As String
'
' Formatting function left pads with spaces, using specified
' number of decimal digits.
'
If IsNumeric(ValIn) Then
If nDec > 0 Then
LPad = Right$(Space$(WidthOut) & _
Format$(ValIn, "0." & String$(nDec, "0")), _
WidthOut)
Else
LPad = Right$(Space$(WidthOut) & Format$(ValIn, "0"), WidthOut)
End If
Else
LPad = Right$(Space$(WidthOut) & ValIn, WidthOut)
End If
End Function
Schritt-für-Schritt-Beispiel
Starten Sie ein neues Exe-Projekt von Visual Basic Standard. Formular1 wird standardmäßig erstellt.
Fügen Sie vier CommandButton-Steuerelemente zu Form1 hinzu. Positionieren Sie sie ganz rechts im Formularfenster.
Fügen Sie den folgenden Code zum Abschnitt "Allgemeine Deklarationen" von Form1 hinzu:
Option Explicit Private Sub Command1_Click() Me.Print "|" & Format$(Format$(1.5, "$##0.00"), "@@@@@@@") & "|" Me.Print "|" & Format$(Format$(12.5, "$##0.00"), "@@@@@@@") & "|" Me.Print "|" & Format$(Format$(123.5, "$##0.00"), "@@@@@@@") & "|" End Sub Private Sub Command2_Click() Dim x As String x = (Format$(123.5, "$##0.00")) Me.Print "x" & x & "x" RSet x = (Format$(1.5, "$##0.00")) Me.Print "x" & x & "x" End Sub Private Sub Command3_Click() Dim required As Integer Dim a As Single Dim b As Single Dim num1$, num2$ required = 8 ' longest number expected a = 1.23 b = 44.56 num1$ = Format$(a, "#0.00")' this converts the number to a string num2$ = Format$(b, "#0.00")' with two decimal places and a leading zero 'Debug.Print num2$ If (required - Len(num1$)) > 0 Then num1$ = Space$(required - Len(num1$)) & num1$ End If If (required - Len(num2$)) > 0 Then num2$ = Space$(required - Len(num2$)) & num2$ End If ' test output Me.Print num1$ Me.Print num2$ End Sub Private Sub Command4_Click() Dim xstring As String xstring = LPad(2.3, 2, 7) Me.Print "K" & xstring & "K" End Sub Private Sub Form_Load() Command1.Caption = "@" Command1.Font.Size = 18 Command2.Caption = "Rset" Command3.Caption = "Format$" Command4.Caption = "VBPJ" Me.Font.Name = "Courier New" End Sub Private Function LPad(ValIn As Variant, nDec As Integer, _ WidthOut As Integer) As String ' ' Formatting function left pads with spaces, using specified ' number of decimal digits. ' If IsNumeric(ValIn) Then If nDec > 0 Then LPad = Right$(Space$(WidthOut) & _ Format$(ValIn, "0." & String$(nDec, "0")), _ WidthOut) Else LPad = Right$(Space$(WidthOut) & Format$(ValIn, "0"), WidthOut) End If Else LPad = Right$(Space$(WidthOut) & ValIn, WidthOut) End If End FunctionFühren Sie das Programm aus, klicken Sie auf die Befehlsschaltflächen, und beobachten Sie die Ergebnisse.