Notifications
Clear all

Comando para Isolar somente uma parte do texto

13 Posts
2 Usuários
0 Reactions
2,680 Visualizações
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

Bem, já que o amigo alexandre orientou a cada pergunta não suprida pela busca do fórum, a criação de um novo tópico para ajudar buscas futuras de outros membros com o mesmo problema, vou novamente importunar vocês amigos!

Busquei na internet, e creio que definitivamente, ou não consigo escolher bem as palavras chaves para a busca, ou estou procurando nos lugares errados, enfim, creio que minha dúvida seja bem básica e elementar, mas vamos lá:

Preciso de um comando que retorne somente o valor entre ( ) de um certo texbox. Porque? Pois possuo uma database com todos os aeroportos do mundo, e seus respectivos códigos de identificação, pois então, eu preciso em um campo de retornar somente o código:

Por exemplo: Porto Seguro, Brasil ( BPS ) - O valor que preciso para colocar em uma terceira texbox é somente o BPS.

Bem amigos, vocês sabem como eu posso fazer para retornar tal valor?

Desde já, obrigado!

 
Postado : 20/03/2012 8:22 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

As informações estão separadas ou em uma única linha?
Normamente eu faço assim =right(A2;find("(";A2;1)) agora que vem o segredo, antes do último parentesis, eu coloco operadores matemáticos para localizar a posição do ")" e depois me acha "X" espaços e retorna o valor BPS.

 
Postado : 21/03/2012 6:21 am
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

thelol, obrigado pela resposta mas o código não funcionou, inclusive não entendi a sintaxe dele.

Os dados estarão em uma mésma célula inclusive, pense que é um texto. Mas ao invés de mandar procurar na planilha toda, vou colocar uma combobox selecionável, que irá rebater esses valores para uma texbox, dessa maneira creio eu que fique mais fácil.

Só preciso saber se tem um comando que procure dentro de um campo, e retorne um outro valor.

( O pensamento lógico que preciso é basicamente o seguinte: procurar o termo "(", onde começa o código, e retornar os 3 próximos valores após esse termo, que será justamente o código. )

Algum comando tem essa função?

 
Postado : 21/03/2012 9:25 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

A Function abaixo foi criada por Alexandre Neves em 2011-12-28 no fórum MaximoAccess, pena que não tenho mais o link, depois pesquiso, na época adaptei para algo parecido, a function completa tinha outros parametros.

Private Sub CommandButton1_Click()
    Dim sTexto As Variant
    Dim texto As Variant

    texto = TextBox1.Text

    sTexto = ExtrairTexto(texto)
    
    TextBox2.Text = sTexto
    
End Sub

Private Function ExtrairTexto(str As Variant) As String
    Dim Inicio As Integer
    Dim Fim As Integer
    
    Inicio = InStr(1, str, "(") + 2
    Fim = InStr(Inicio, str, " )")
    
    ExtrairTexto = Mid(str, Inicio, Fim - Inicio)

End Function

[]s

 
Postado : 21/03/2012 9:38 am
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

Mauro! Pelo que estou lendo é exatamente o que estou precisando! Obrigado desde já, estou no meu horário de almoço, assim que voltar ao escritório, testo e dou retorno!

 
Postado : 21/03/2012 9:43 am
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

Mauro, estou tentando usar o comando que você postou mais retorna o seguinte erro: Argumento ou chamada de execução inválida,

e sublinha a seguinte linha:

ExtrairTexto = Mid(str, Inicio, Fim - Inicio)

Alguma idéia? eu copiei exatamente como você mandou, só renomeei os campos para os campos que utilizo.

 
Postado : 22/03/2012 1:22 pm
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

No meu projeto está assim:

Private Sub CommandButton4_Click()
Dim sTexto As Variant
Dim texto As Variant

texto = ComboBox2.Text

sTexto = ExtrairTexto(texto)

TextBox30.Text = sTexto
End Sub
Private Function ExtrairTexto(str As Variant) As String

Dim Inicio As Integer
Dim Fim As Integer

Inicio = InStr(1, str, "(") + 2
Fim = InStr(Inicio, str, " )")
ExtrairTexto = Mid(str, Inicio, Fim - Inicio)

End Function

 
Postado : 22/03/2012 1:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

arthur, vou me basear pelas instruções colocadas no CommandButton4, como não sei os procedimentos até chegar o momento de eu acionar este Botão, eu arrisco o palpite que o problema é a intrução :

texto = ComboBox2.Text

Pelo erro, indica que o Combo está vazio.

[]s

 
Postado : 22/03/2012 1:39 pm
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

hmm, estranho, vou tentar explicar o que procede.

Este combobox possui um rowsource para minha database, que inclui todos os aeroportos do mundo, ele só está no local para facilitar ao colocar os dados.

O mais estranho é que me certifiquei de preencher o combo para efetuar o teste, deixe eu conferir somente um fator que agora me veio a cabeça...

 
Postado : 22/03/2012 2:12 pm
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

Mauro, creio que agora vou conseguir resolver, sua ajuda me clareou!

Este combobox está dentro de um multipage, e por eu ter ocultado as tabs havia me esquecido...

Creio eu se colocar Multipage.combobox2 agora vai dar certo, vou efetuar o teste!

 
Postado : 22/03/2012 2:19 pm
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

Não obtive sucesso, testei usando multipage, e testei inclusive criando uma nova textbox ao lado do button e da textbox de destino, continua dando o mesmo erro e sublinhando a seguinte linha:

ExtrairTexto = Mid(str, Inicio, Fim - Inicio)

 
Postado : 22/03/2012 2:25 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O codigo postado pelo colega Mauro, parte do principio que logo após o "(" há um campo em branco e que antes do ")" tambem existe esse espaço.
Se está dando erro e por não achar " )", entao altere na função as linhas conforme abaixo:

Inicio = InStr(1, str, "(") + 1
Fim = InStr(Inicio, str, ")")

 
Postado : 22/03/2012 2:59 pm
(@arthurdiegoo)
Posts: 99
Estimable Member
Topic starter
 

Muitíssimo obrigado ao amigo Mauro pelo código inicial e ao amigo Reinaldo pela correção, eu estava pensando que fosse algo acerca do que o reinaldo falou, mais preferi nao mecher no código por falta de experiência!

Muitíssimo obrigado a ambos! funcionando perfeitamente agora!

 
Postado : 22/03/2012 3:15 pm