Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Guest Isis

Funções

Question

Guest Isis

Pessoal,

eu estou com uma dúvida... se em uma célula eu tenho o seguinte conteudo:

Exemplo Dúvida 523547852

e eu quero que em uma outra célula apareçam somente os números, ou seja, que apareça como resultado 523547852.

Não sei se existe uma função que consiga distinguir números de letras.

Sei que existe a função direira que poderia resolver o problema mas nem todas as células possuem o número no final, algumas estão assim: Exemplo 5243351 Dúvida.

Se alguém souber alguma forma de sanar esta minha dúvida serei muito grata.

Isis

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Use a função Split() para dividir o texto pelo caracter de espaço. Depois verifique qual deles é um valor maior que 0. Exemplo:

s = "Exemplo Dúvida 523547852"
elementos = split(s, " ")
for each elemento in elementos
  if val(elemento)>0 then
    msgbox elemento & " é um número."
  else
    msgbox elemento & " é um texto."
  endif
next elemento

Certo? wink.gif

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Graymalkin, tava lendo sua resposta, mas não entendi:

1 - Como funciona a função split?

Entendi q você divide a variável s onde ele encontrar o espaço. Mas elementos é uma variável string? Que valor ela recebe, o q está antes do espaço? E se eu quiser pegar o q está depois?

2 - O q é a variável elemento? Como funciona esse for q c fez?

Share this post


Link to post
Share on other sites
  • 0

Split, como o nome sugere, divide algo. Nesse caso, divide uma string em um vetor de variantes (variante, ou "variant" no original, é o tipo de dados do VB no qual você pode comportar quaisquer dos outros tipos [string, integer, long, etc.]).

No caso...

s = "Exemplo Dúvida 523547852"
elementos = split(s, " ")
... vai tornar "elementos" em um vetor, contendo: elementos(0) = "Exemplo" elementos(1) = "Dúvida" elementos(2) = "523547852" Se você fizer...
msgbox elementos(0)
msgbox elementos(1)
msgbox elementos(2)

... poderá comprovar isso. Certo? wink.gif

Quanto ao "For Each", vou transcrever aqui uma explicação que fiz para um amigo há um tempo atrás:

"""

O For Each... Next a gente usa quando se quer iterar (percorrer) sobre uma coleção de objetos ou sobre um vetor. O For...Next só itera sobre valores (de 1 até 100, de 20 a 30, 50 a 100, etc.). "For Each" significa "Para cada". Vamos a um exemplo:

for each controle in me.controls

msgbox controle.name

next controle

Com o código acima eu vou percorrer todos os controles do form atual (me). A cada iteração (volta do loop) o objeto "controle" estará referenciando-se a um determinado controle (igual quando você faz "for i=1 to 10", a cada iteração, o "i" vai ter um valor da faixa especificada). No caso acima, será exibida uma caixa de mensagem com o nome do controle. Vamos a outro exemplo, agora com um vetor:

frutas = array("maçã", "pêra", "abacaxi", "limão")

for each fruta in frutas

msgbox fruta

next fruta

O código acima percorre todo o vetor "frutas" mostrando cada um dos nomes. No caso, a variável "fruta", a cada iteração, vai conter um dos nomes. O código acima poderia ser escrito com o For comum também:

for i=0 to ubound(frutas)

msgbox frutas(i)

next i

Mas, compare esse código com o anterior e você verá que o outro é muuuiiitttooo mais claro. No primeiro, literalmente, você pode ler: "PARA CADA FRUTA EM FRUTAS". Já no segundo você está trabalhando com os índices e não diretamente com os objetos (os quais você acessa especificando o índice, como em "msgbox frutas(i)"). Apesar de não aplicável a todos os casos no VB, acho o For Each muito melhor que o For convencional.

"""

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Valeu graymalkin. Agora ficou mais claro.

So uma coisa... No seu exemplo:

for each fruta in frutas

msgbox fruta

next fruta

Essa variavel "fruta" é de q tipo? Declaro como variant tb?

Share this post


Link to post
Share on other sites
  • 0
Valeu graymalkin. Agora ficou mais claro.

So uma coisa... No seu exemplo:

for each fruta in frutas

msgbox fruta

next fruta

Essa variavel "fruta" é de q tipo? Declaro como variant tb?

Sim, tem que ser Variant ou Object. Tentar fazer...

Dim fruta As String
For Each fruta In frutas
    Msgbox fruta
Next

... resulta em erro.

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148131
    • Total Posts
      643434
×
×
  • Create New...