Функция Pad для денежных значений в VBA

Я пытаюсь сделать что-то вроде функции str_pad в VBA, возвращающей начальные нули впереди денежных значений.

Например, если я хочу заполнить его шестью цифрами:

Input:
$ 423,67
Output:
000423

Пока что он может добавлять эти ведущие нули, но я не могу понять, как это реализовать, когда в нем нет десятичных знаков:

Input:
$ 423,00
Current output:
000423
Desired output:
042300

Поскольку пользователь обычно не включает нули после запятой, мой код должен иметь возможность помещать их в вывод.

Код:

Function str_pad(text As Variant, totalLength As Integer, padCharacter As String) As String
    If totalLength > Len(CStr(text)) Then
        'str_pad = String(totalLength - Len(CStr(text)), padCharacter) & CStr(text)
    Else
        str_pad = text
    End If
End Function

Ваши примеры 423,67 => 000423 и 423,00 => 042300, кажется, противоречат друг другу, иначе это был бы дубликат Добавить начальные нули / 0 к существующим значениям Excel определенной длины.

GSerg 01.05.2018 18:34
Этот может быть интересным ... тоже излишество, но интересно, несмотря ни на что ;-)
Mathieu Guindon 01.05.2018 19:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
254
1

Ответы 1

Как насчет изменения вашей функции на что-то вроде ниже, это отформатирует числа по желанию, а затем удалит десятичный разделитель, поэтому числа будут отображаться, как ожидалось, я пропустил totalLength, поскольку это добавит числа к 6 цифрам:

Function str_pad(text As Variant, padCharacter As String) As String
        str_pad = Format(text, "0000.00")
        str_pad = Replace(str_pad, ".", "")
End Function

Чтобы использовать это, вы можете использовать такую ​​формулу: =str_pad(A1,0)

Будет ли «запятая-как-десятичный-разделитель» не-EN-US работать в VBA, ориентированном на EN-US, без модификатора локали? В маске формата может потребоваться использование точки независимо от регионального десятичного разделителя в системе.

user4039065 02.05.2018 03:57

@Jeeped, спасибо за ваш комментарий, изначально я использовал точки, но когда я понял, что OP использует запятые, я подумал, что должен исправить свой ответ .... В любом случае, вы всегда чему-то учитесь, пытаясь, спасибо :)

Xabier 02.05.2018 10:05

Другие вопросы по теме