Подтвердить что ты не робот

Любой метод, эквивалентный PadLeft/PadRight?

Просто интересно, есть ли эквивалент в VBA для методов VB.NET PadLeft и PadRight?

Как сейчас, всякий раз, когда я хочу взять строку и сделать ее фиксированной длиной с ведущими пробелами, я делаю цикл For... Next на основе длины строки.

Например, я бы использовал следующий код для форматирования строки до 8 символов с ведущими пробелами:

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

Есть ли способ сделать то же самое в меньшем числе строк в VBA?

4b9b3361

Ответ 1

Я не считаю, что существуют явные функции PADLEFT или PADRIGHT, но вы можете использовать комбинацию SPACE и LEFT или RIGHT для добавления пробелов к вашей строке, а затем захватить справа X количество символов.

PADLEFT

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

Если вам нужен символ вместо пробелов, вы можете использовать STRING вместо пространства (пример ниже левых площадок с X):

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

PADRIGHT

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

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

Ответ 2

Вы можете использовать их. Поместите их в открытый модуль

'NB Ошибка, если длина ввода больше общей длины

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

Ответ 3

Поскольку мы обычно размещаем на левой стороне, функция Format() короче, проще:

Format(number, "    ")

Format(number, "00")

Ответ 4

Вы также можете использовать строки фиксированной длины в VBA:

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

хотя это полезно только для заполнения справа.

Ответ 5

Format("abc","[email protected]@@@@@") ' width >= 6; pad right side with spaces
Format("abc","@@@@@@") ' width >= 6; pad left side with spaces