Ir para conteúdo
Fórum Script Brasil
  • 0

While - Wend


bEbEr

Pergunta

Galera..

to com a seguinte dúvida:

como faço a condição no while.. puxando os dados diferentes de "VALOR" e igual a "" (VAZIO)?

Tentei isso daqui:

While ActiveSheet.Range("A" & i).Value <> "VALOR" And While ActiveSheet.Range("A" & i).Value = ""

mas não obtive sucesso! ;~

alguém ai me ajuda?!

flwwww

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Desculpe, me enganei.. não exatamente este o erro.

Tipo assim. Na coluna A tem os seguintes valores:

A1 = TIAGO

A2 = VALOR

A3 = "" (VAZIO)

A4 = TIAGO

A5 = VALOR

A6 = TIAGO

A7 = "" (VAZIO)

A8 = VALOR

Eu montei a seguinte condição:

i=1

While ActiveSheet.Range("A" & i).Value <> "VALOR"

ActiveSheet.Range("A" & i).Value = "deleta"

Wend

Ou seja, os valores que forem diferente de VALOR, ele põe o nome de DELETA. Mais o que acontecendo é o seguinte, ele altera o nome pra DELETA só até no A1 e depois a célula A3 fica ativa, porque o A2 é VALOR então ele diz que termino.. segundo a condição que eu montei.. mas tem mais valores para ele verificar..

Como faço pra verificar um po um?

falou

Link para o comentário
Compartilhar em outros sites

  • 0

Por que você não tenta usar um laço For?

Tipo, primeiro voce armazena o numero de linhas que voce quer fazer (no caso 8), joga em uma variavel e dps:

For i = 1 to linhas
   If ActiveSheet.Range("A" & i).Value <> "VALOR" then
      ActiveSheet.Range("A" & i).Value = "deleta"
   End if
Next

acho que seria mais apropriado, já que você sabe em quantas linhas quer fazer

Link para o comentário
Compartilhar em outros sites

  • 0

Você precisa ter um jeito de dizer qual é o final da lista ou então verificar todas as linhas. O ideal seria verificar até que a célula fosse vazia, mas no caso, vazio é um valor possível para uma célula, então não se pode utilizá-lo como delimitador. Para verificar todas as células de uma coluna você pode fazer:

    coluna = "A:A"
    Range(coluna).Select
    qt = Selection.Count
    
    For i = 1 To qt
        If Selection.Item(i) = "VALOR" Then
            Selection.Item(i) = "DELETA"
        End If
    Next i

Só vai levar um tempinho porque são 65536 linhas para serem verificadas (pelo menos é isso aqui no Excel 2003).

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Graymalkin, deu certo! ;)

Queria sabe também, como faço pra excluir uma coluna inteira em VBa. Como faço?

Tipo, tem como criar uma barra de processamento ali naquele processo que ele faz?

falou

Link para o comentário
Compartilhar em outros sites

  • 0
Graymalkin, deu certo! ;)

:)

Queria sabe também, como faço pra excluir uma coluna inteira em VBa. Como faço?

Assim:

    Range("A:A").Select
    Selection.Delete

Mas, qualquer coisa que você quiser fazer em VBA é só gravar uma Macro realizando a ação desejada e depois olhar o código gerado para ela (no editor do VBA - ALT+F11).

Tipo, tem como criar uma barra de processamento ali naquele processo que ele faz?

Sim, se você colocar uma ProgressBar na planilha, bastará definir a sua propriedade Max com o total e depois incrementar a propriedade Value para ela "encher". Acredito que vá ser necessário chamar DoEvents dentro do loop para liberar o processamento a fim de encher a barra.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...