zeros with padleft net lpad left ejemplo string vba

string - with - ¿Algún método equivalente a PadLeft/PadRight?



padleft sql (5)

Me pregunto, ¿hay algún equivalente en los métodos PadLeft y PadRight de VBA a VB .NET?

A partir de ahora, cada vez que quiero tomar una cadena y hacerla de una longitud fija con espacios iniciales, hago un ciclo Para ... Siguiente basado en la longitud de la cadena.

Por ejemplo, usaría el siguiente código para formatear una cadena de 8 caracteres con espacios iniciales:

intOrdNoLen = Len(strOrdNo) For i = 1 To (8 - intOrdNoLen) Step 1 strOrdNo = " " & strOrdNo Next

¿Hay alguna forma de hacer lo mismo en menos líneas en VBA?


Como generalmente hacemos pad en el lado izquierdo, la función Format () es más corta, más simple:

Format(number, " ") Format(number, "00")


No creo que PADRIGHT funciones explícitas de PADLEFT o PADRIGHT , pero puede usar una combinación de SPACE e LEFT o RIGHT para anteponer espacios a su cadena, y luego tomar el número X correcto de caracteres.

PADLEFT

strOrdNo = RIGHT(Space(8) & strOrdNo, 8)

Si quieres un personaje en lugar de espacios, puedes usar STRING lugar de espacio (el ejemplo debajo de los left-pads con X):

strOrdNo = RIGHT(String(8, "X") & strOrdNo, 8)

PADRIGHT

strOrdNo = LEFT(strOrdNo & Space(8), 8) strOrdNo = LEFT(strOrdNo & String(8, "X"), 8)


Puedes usar estos. Póngalos en un módulo público

''NB falla si la cadena de entrada es más larga que la longitud total

Function PadLeft(text As Variant, totalLength As Integer, padCharacter As String) As String PadLeft = String(totalLength - Len(CStr(text)), padCharacter) & CStr(text) End Function Function PadRight(text As Variant, totalLength As Integer, padCharacter As String) As String PadRight = CStr(text) & String(totalLength - Len(CStr(text)), padCharacter) End Function


También puede usar cadenas de longitud fija en VBA:

Dim myString As String * 10 myString = "test" Debug.Print myString, "(" & Len(myString) & ")" ''// Prints "test (10)"

aunque esto solo es útil para el relleno a la derecha.


Format("abc","!@@@@@@") '' width >= 6; pad right side with spaces Format("abc","@@@@@@") '' width >= 6; pad left side with spaces