Formatieren von Zeichenfolgen zum Right-Justify beim Aufrufen des Druckens durch eine Anwendung
In diesem Artikel wird das Formatieren von Zeichenfolgen in Right-Justify erläutert, wenn eine Anwendung das Drucken aufruft.
Originalversion des Produkts: Visual Basic
Ursprüngliche KB-Nummer: 217012
Zusammenfassung
Es gibt verschiedene Möglichkeiten, Zeichenfolgen mithilfe der Format-Funktion rechtsbündig zu rechtfertigen:
Verwenden Sie das
@Zeichen.Verwenden Sie die
RSetFunktion.Verwenden Sie Problemumgehungen für die
Format$Funktion.
Verwenden des @-Zeichens
Hinweis
Diese Technik ist nur bei monospace Schriftarten wie Courier New.
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 dem gewünschten Format entsprechen, z. B. @@@@@.@
Im folgenden Codebeispiel werden mehrere Zahlen mit sieben @-Zeichen und einem Sieben-Zeichen-Format ($##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 ist;
| $1.50|
| $12.50|
|$123.50|
Verwenden der RSet-Funktion
Bei Verwendung in Verbindung mit RSetfunktioniert die Formatfunktion bei 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 mithilfe der Format$-Funktion
Hinweis
Diese Techniken sind nur bei monospace Schriftarten wirksam, z Courier New. B. .
Die Format$-Funktion rechtfertigt keine Zeichenfolgen mit der rechten Maustaste, wenn sie mit dem #-Symbol verwendet wird. Im ersten Codebeispiel wird die Len-Funktion verwendet, um zu bestimmen, wie viele Leerzeichen links von der Zeichenfolge, die die Zahl darstellt, hinzugefügt werden müssen, 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 Genehmigung seines Autors Karl Peterson erneut 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 Visual Basic Standard EXE-Projekt. Form1 wird standardmäßig erstellt.
Fügen Sie Form1 vier CommandButton-Steuerelemente 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.