VBA - определение формата и использование его в качестве условия - PullRequest
0 голосов
/ 17 января 2020

У меня есть форма, где пользователям предлагается ввести информацию в поле. Информация поступает в 1 из 3 форматов: 12345-647-91 1234-5678-91 или 12345-6789-1

Я пытаюсь создать макрос, который идентифицирует формат и на основе которого выводит новое значение , Например

  If format = XXXXX-XXX-XX Then
  output XXXXX-0XXX-00XX

  else if format = XXXX-XXXX-XX Then
  output 0XXXX-XXXX-00XX'

et c

Любое руководство?

Ответы [ 2 ]

2 голосов
/ 17 января 2020

Вот еще одна альтернатива:

Sub Test()

Dim arr1 As Variant: arr1 = Array("12345-123-12", "1234-1234-12", "12345-1234-1")
Dim arr2 As Variant
Dim Res As String

For Each el In arr1
    arr2 = Split(el, "-")
    Debug.Print Join(Array(Format(arr2(0), "00000"), Format(arr2(1), "0000"), Format(arr2(2), "0000")), "-")
Next

End Sub
2 голосов
/ 17 января 2020

Вы можете использовать Like для этого:

Private Function myFormat(ByVal userInput As String) As String

    If userInput Like "#####-###-##" Then

        myFormat = Mid$(userInput, 1, 6) & "0" & _
                   Mid$(userInput, 7, 4) & "00" & _
                   Mid$(userInput, 8, 2)

    ElseIf userInput Like "####-####-##" Then

        myFormat = Mid$(userInput, 1, 10) & "00" & _
                   Mid$(userInput, 11, 2)

    ElseIf userInput Like "#####-####-#" Then
        ' and so on
    End If

End Function

Вызывается так:

Sub Test()
    Debug.Print myFormat("99999-999-99") '<~ returns 99999-0999-0099
    Debug.Print myFormat("9999-9999-99") '<~ returns 9999-9999-0099
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...