Adiciona zero à esquerda para um campo sem formatação como texto

0

Eu tenho uma coluna de códigos UPC, alguns dos quais com 7 dígitos e preciso convertê-los em códigos UPCA com 12 dígitos. Eu usei o VBA abaixo para criar um módulo que estou chamando em uma consulta em todos os UPCs de 7 dígitos. O campo "ItemUPCCode" é um texto curto do tipo de dados. Se eu adicionar manualmente um zero a um código de 7 dígitos, funcionará bem.

Exemplo: eu mudo 7482241 para 07482241 e o resultado é 074820000041

Eu quero forçar a coluna ItemUPCCode a adicionar um zero na frente de todos os UPCs de 7 dígitos, para que eu não precise fazê-lo manualmente. Se eu usar a função Format, então o resultado é tratado completamente como texto, então o código VBA não funciona e cospe "Invalid".

Existe uma maneira de adicionar o zero sem tratá-lo como texto ou ajustar o VBA para compensar?

Aqui está o meu código de módulo:

Rem ***** BASIC *****
Public Function UPCE2UPCA(ByVal UPCE As String) As String
'
' Convert UPC-E to UPC-A format
'
' Written by Glenn J. Schworak (www.schworak.com)
'
Dim ValidDigits As String
Dim Mfg As String
Dim Prod As String

If Len(UPCE) <> 8 Or (Left(UPCE, 1) <> "0" And Left(UPCE, 1) <> "1") Then
'
' Return INVALID instead of a UPC-A code
'
UPCE2UPCA = "INVALID"
Else
'
' Convert the UPC-E to UPC-A
'
ValidDigits = Mid(UPCE, 2, 6)
Select Case Right(ValidDigits, 1)
Case "0"
Mfg = Left(ValidDigits, 2) & Right(ValidDigits, 1) & "00"
Prod = "00" & Mid(ValidDigits, 3, 3)
Case "1"
Mfg = Left(ValidDigits, 2) & Right(ValidDigits, 1) & "00"
Prod = "00" & Mid(ValidDigits, 3, 3)
Case "2"
Mfg = Left(ValidDigits, 2) & Right(ValidDigits, 1) & "00"
Prod = "00" & Mid(ValidDigits, 3, 3)
Case "3"
Mfg = Left(ValidDigits, 3) & "00"
Prod = "000" & Mid(ValidDigits, 4, 2)
Case "4"
Mfg = Left(ValidDigits, 4) & "0"
Prod = "0000" & Mid(ValidDigits, 6, 1)
Case Else
Mfg = Left(ValidDigits, 5)
Prod = "0000" & Mid(ValidDigits, 6, 1)
End Select
'
' Return the 12 digit UPC-A code
'
UPCE2UPCA = Left(UPCE, 1) & Mfg & Prod & Right(UPCE, 1)
End If
End Function
    
por Tony Tambe 23.02.2017 / 19:01

1 resposta

0

Acabei de adicionar isso ao meu VBA acima:

If Len(UPCE) = 7 Then
  UPCE = "0" + UPCE
End If

Adicionando um "0" na frente de qualquer entrada ItemUPCCode de 7 dígitos. Em seguida, ele é corrigido com o módulo em vez da consulta.

    
por 23.02.2017 / 20:47