Valor de uma célula...
 
Notifications
Clear all

Valor de uma célula dividida em várias TextBoxes!!!

2 Posts
1 Usuários
0 Reactions
943 Visualizações
Nunes88
(@nunes88)
Posts: 2
New Member
Topic starter
 

Senhores, bom dia!
Acompanho este fórum há tempos, mas somente agora vi necessidade de me cadastrar para fazê-los um questionamento, pois sempre achei o que precisava.

Bom, vamos ao problema:

- Trata-se de um cadastro de Clientes / Obras para minha empresa.
- O código está todo formatado, porém estou com problemas na hora de pegar um valor de uma única célula (da linha previamente selecionada por um critério próprio) da planilha e dividi-la entre 6 textboxes.
- Trata-se de uma formatação de endereço, que segue:
Logradouro. Endereco, Numero - Complemento - Bairro / Estado
- Quando a pessoa insere as informações antes, no mesmo formulário, o código faz com que todas fiquem formatadas, atribuindo a pontuação dentro da Coluna G da planilha ativa (Índice da coluna = 7).

Porém, o problema se dá na hora de buscar estas informações na planilha:
Quero exatamente o processo inverso: Dividir as informações célula da coluna G selecionada pela "caixa_localizar" para posteriormente poder editá-las (mas o código de edição já está pronto, não se preocupem com isso).

Segue o código, que estou usando aqui para baseá-los:

Private Sub caixa_localizar_Click()
' pegando quantidade de linhas preenchidas
treditar = ActiveSheet.UsedRange.Rows.Count

'declarando variáveis i e nind
Dim i As Double
Dim nind As Double

'para i de 0 até a quantidade de linhas preenchidas
For i = 0 To treditar

'Condicional para procurar de acordo com a opção escolhida na caixa de seleção
If caixa_localizar.ListIndex = i Then

'Soma três aqui ao listindex, que começa em 0 para a linha 1 da planilha porque tenho duas linhas no topo, fixas e preenchidas. A primeira com a logo da empresa e a segunda com os títulos das colunas.
nind = i + 3

'-----------> Celula a ser procurada e dividida ----> Cells(nind, 7)

'Preencher Caixas ou TextBoxes
cxlogradouro = (Comp primeiro item da esquerda para a direita, na célula, aqui, algum código que faça reconhecer para pegar o tipo logradouro que SEMPRE termina com "." Ex.: AV. / R. / PÇ.
txtendereco = Semelhante ao de cima, porém segundo item limitado por "." a esquerda (mesmo "." que limita o logradouro a direita) e "," a direita.
txtnumero = Semelhante ao de cima, terceiro item limitado por "," a esquerda e "-" a direita.
txtcomplemento = Mesma coisa, quarto item limitado por "-" a esquerda e "-" a direita (sim, está entre traços).  
txtbairro = Quinto item limitado por "-" a esquerda e "/" a direita
cxestado = Sexto item limitado por "/" a esquerda

Exit Sub
End If
Next
End Sub

Ou seja, resumindo: Cells(linha atual escolhida pela listindex da caixa localizar,7) = cxlogradouro". " txtendereco", " txtnumero" - "txtcomplemento" - "txtbairro" / "cxestado

 
Postado : 21/04/2015 3:24 am
Nunes88
(@nunes88)
Posts: 2
New Member
Topic starter
 

Bom, senhores!

Após um tempo focado na resolução do meu problema, venho trazer uma solução usual e de emergência para resolver o problema, talvez haja outra mais prática. Mas...

Usei uma mescla de comandos, mas o que me favoreceu para a resolução do problema foi o Replace:
Substitui os caracteres da formatação por algum de sua escolha.
Ex.: MinhaCel = Replace (MinhaCel, "Caracter presente na MinhaCel", "Caracter escolhido por mim")

Substitui todos os caracteres diferentes de "-" para "-"

Após, apliquei o comando Split(Trim(MinhaCel), "-") (Num que varia de 0 ao numero de tracos)

O comando "SE" se deu por conta da presença ou não do Complemento, que não é obrigatório na hora de cadastrar a obra.

Vejam o Código a seguir:

 'declarando variavel que conta quantidade de traços
Dim verqtdtraco As Variant
'declarando variavel 2 que contaquantidade de traços só por desencargo com o ubound
Dim qtdtracos As Double 
'declarando uma variável para substituir a celula em questão para não termos que alterá-la na planilha
Dim sc7 As String 
sc7 = Cells(nind, 7)
verqtdtraco = Split(sc7, "-")
qtdtracos = UBound(verqtdtraco)

If qtdtracos = 2 Then
sc7 = Replace(sc7, ". ", "-") 'substitui ponto e espaço por traço
sc7 = Replace(sc7, ", ", "-") 'substitui virgula e espaço por traço
sc7 = Replace(sc7, " - ", "-") 'substitui traço e espaços por traço
sc7 = Replace(sc7, " / ", "-") 'substitui barra e espaços por traço
cxlogradouro.Text = Split(Trim(sc7), "-")(0)
txtendereco.Text = Split(Trim(sc7), "-")(1)
txtnumero.Text = Split(Trim(sc7), "-")(2)
txtcomplemento.Text = Split(Trim(sc7), "-")(3)
txtbairro.Text = Split(Trim(sc7), "-")(4)
cxestado.Text = Split(Trim(sc7), "-")(5)
Else
If qtdtracos < 2 Then
sc7 = Replace(sc7, ". ", "-")
sc7 = Replace(sc7, ", ", "-") 
sc7 = Replace(sc7, " - ", "-")
sc7 = Replace(sc7, " / ", "-")
cxlogradouro.Text = Split(Trim(sc7), "-")(0)
txtendereco.Text = Split(Trim(sc7), "-")(1)
txtnumero.Text = Split(Trim(sc7), "-")(2)
txtcomplemento.Text = ""
txtbairro.Text = Split(Trim(sc7), "-")(3)
cxestado.Text = Split(Trim(sc7), "-")(4)
End If
End If

Abraços!

 
Postado : 21/04/2015 7:32 pm