Ir ao conteúdo
  • Cadastre-se

Excel VBA - Como fazer o IF ignorar algumas celulas ja preenchidas


Ir à solução Resolvido por Midori,

Posts recomendados

Sub main ()

Dim Item    As Range
    
    Set Item = ThisWorkbook.Sheets("Carga").Cells.Find( _
        What:="Add item", LookIn:=xlValues, LookAt:=xlWhole)
        
    If Not Item Is Nothing Then
        Set Item = Item(2)
            While Item <> ""
                Item = "245897-" & Item
        Set Item = Item(2)
        Wend
    End If
    
End Sub

como adiciono a esse codigo uma função que se ja tiver o numero "245897-" na celula não precisa adicionar na frente do texto image.png.05acae79a4d2dcad3641753e710b65f6.png

Link para o comentário
Compartilhar em outros sites

@isabela queiroz Como o seu código não tem nenhuma condição no loop para concatenar "245897-" com o valor da célula, isso será feito para qualquer uma. Por isso você precisa testar antes se o valor já começa com "245897-". É isso que estrutura que postei faz.

 

Veja que usei duas funções de string, Left e Len, para verificar se o código já faz parte do início do valor da célula

Link para o comentário
Compartilhar em outros sites

@Midori Atualização:

 

Consegui arrumar um erro que tinha encontrado mas era eu que tinha colocado em ordem errada, assim ta funcionando, poderia verificar se esta tudo certo com o codigo e não aparenta apresentar erros futuros?

 

E eu notei que algumas das celulas da minha tabela original tem celulas brancas, ai o codigo acaba quando chega nela, sendo que é pra continuar para a proxima, como faço para ignorar as celulas vazias e continuar o codigo?

 

Sub main ()

Dim Item    As Range
    
    Set Item = ThisWorkbook.Sheets("Carga").Cells.Find( _
        What:="Add item", LookIn:=xlValues, LookAt:=xlWhole)
        
    If Not Item Is Nothing Then
        Set Item = Item(2)
    
                While Item <> ""
            If Left(Item.Value, Len("245897-")) <> "245897-" Then
                Item = "245897-" & Item
            End If
        
        Set Item = Item(2)
        Wend
    End If
End Sub

 

Link para o comentário
Compartilhar em outros sites

  • Solução
35 minutos atrás, isabela queiroz disse:

E eu notei que algumas das celulas da minha tabela original tem celulas brancas, ai o codigo acaba quando chega nela, sendo que é pra continuar para a proxima, como faço para ignorar as celulas vazias e continuar o codigo?

Nesse caso pode atribuir a última linha da planilha para fazer o loop até ela. Dependendo da tabela pode ser com CurrentRegion ou então UsedRange, p.ex,

 

Sub Main()
    Const PREFIXO   As String = "245897-"
    Dim Item        As Range
    Dim Linha       As Long
    
    Set Item = Cells.Find( _
        What:="Add item", LookIn:=xlValues, LookAt:=xlWhole)
    
    If Not Item Is Nothing Then
        For Linha = Item.Row + 1 To ActiveSheet.UsedRange.Rows.Count
            If Item(Linha).Value <> "" Then
                If Left(Item(Linha).Value, Len(PREFIXO)) <> PREFIXO Then
                    Item(Linha).Value = PREFIXO & Item(Linha).Value
                End If
            End If
        Next Linha
    End If
End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!