Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Versão original do produto: Microsoft Office Access 2003, Microsoft Office Access 2007, Access 2010
Número de KB original: 168798
Resumo
Este artigo fornece um procedimento para analisar uma única variável que contém informações de Cidade, Estado e CEP dos EUA em três variáveis separadas. A rotina dá suporte a:
- Cep de 5 ou 9 dígitos.
- Nomes de estado de várias palavras (se precedidos por uma vírgula).
- Qualquer número de espaços intermediários.
Exemplos de entradas com suporte:
Nova York, Nova Iorque, 99999
Nova York, NY, 99999-9999
Nova York, NY 99999-9999
Nova York NY 99999
Mais informações
AVISO: QUALQUER USO POR VOCÊ DO CÓDIGO/MACRO FORNECIDO NESTE ARTIGO ESTÁ EM SEU PRÓPRIO RISCO. A Microsoft fornece esse código/macro "como está" sem garantia de qualquer tipo, expresso ou implícito, incluindo, mas não se limitando às garantias implícitas de comercialização e/ou aptidão para uma finalidade específica.
OBSERVAÇÃO: No código de exemplo a seguir, um sublinhado (_) no final de uma linha é usado como um caractere de continuação de linha. Para versões do BASIC que não dão suporte a caracteres de continuação de linha, remova o sublinhado do final da linha e mescle com a linha a seguir ao recriar esse código.
Os campos serão analisados na seguinte ordem se nenhuma vírgula for encontrada no endereço: CEP, Estado, Cidade Se pelo menos uma vírgula estiver presente, presume-se que esteja entre Cidade e Estado, e os campos forem analisados em uma ordem diferente: Cidade, Estado, CEP
Exemplo passo a passo
Insira o seguinte código:
Function CutLastWord (ByVal S As String, Remainder As String) _ As String ' CutLastWord: returns the last word in S. ' Remainder: returns the rest. ' ' Words are separated by spaces ' Dim I As Integer, P As Integer S = Trim$(S) P = 1 For I = Len(S) To 1 Step -1 If Mid$(S, I, 1) = " " Then P = I + 1 Exit For End If Next I If P = 1 Then CutLastWord = S Remainder = "" Else CutLastWord = Mid$(S, P) Remainder = Trim$(Left$(S, P - 1)) End If End Function Sub ParseCSZ (ByVal S As String, City As String, State As String, _ Zip As String) Dim P As Integer ' ' Check for comma after city name ' P = InStr(S, ",") If P > 0 Then City = Trim$(Left$(S, P - 1)) S = Trim$(Mid$(S, P + ' ' Check for comma after state ' P = InStr(S, ",") If P > 0 Then State = Trim$(Left$(S, P - 1)) Zip = Trim$(Mid$(S, P + 1)) Else ' No comma between state and zip Zip = CutLastWord(S, S) State = S End If Else ' No commas between city, state, or zip Zip = CutLastWord(S, S) State = CutLastWord(S, S) City = S End If ' ' Clean up any dangling commas ' If Right$(State, 1) = "," Then State = RTrim$(Left$(State, Len(State) - 1)) End If If Right$(City, 1) = "," Then City = RTrim$(Left$(City, Len(City) - 1)) End If End Sub
Para testar, crie um formulário com quatro caixas de texto (txtAddress, txtCity, txtState, txtZip) e um botão de comando. Adicione o seguinte código:
Sub Command1_Click() Dim City As String, State As String, Zip As String ParseCSZ txtAddress, City, State, Zip txtCity = City txtState = State txtZip = Zip End Sub
Exiba o formulário, digite um endereço em txtAddress e clique no botão de comando. Os outros três campos devem conter os valores analisados.