Jump to content

Dificuldade com a Estrutura For Each e If em uma macro Excel


Recommended Posts

Olá tenho uma tarefa, de macro em Excel, para resolver que me ocupa a cabeça já há vários dias...

Já fiz e refiz ,  até achei um código nesta plataforma que me auxiliou muito. Porém, estou com um problema em uma estrutura de repetição nesse código.

Vou deixar aqui o exercício, bem como a minha tentativa , na esperança que alguém me possa direcionar no caminho, sinto que estou perto mas alguma coisa falha..

//Exercício

Fazer uma macro que possa garantir o preenchimento automático de um dado específico na planilha. Esse dado, que será preenchido automaticamente, depende de outros dados específicos do preenchimento da planilha mas que estão correlacionados à ele.

 

//Código feito

Private Sub tbx2_Change()                  'Dentro do campo anterior,  do dado a ser preenchido automaticamente, comecei o código e chamei a macro relacionada que executará o programa principal.

If cx1.Value = "Novo" Then                  'Ele terá a opção de não ser "novo", por isso tem esse If.
    If cx2.Value = "PNM" Then               'Ele terá a opção de não ser "PNM", por isso tem esse If.
        If tbx2.Value = "001" Then            'Ele terá a opção de não ser "PNM", por isso tem esse If.
            Call Comparacao                       'Chamando a macro
        End If
    End If

End If

End Sub

 

              //Macro

Sub Comparacao()

Dim L As Range

    For Each L In Range("D5:D100")                                                   'D5:D100 será o tamanho da coluna que a estrutura For Each terá que ler
        If L.Value <> "001A"  Then                                                       'Estou com dificuldades para fazer a estrutura If, pois preciso garantir a fidelidade de que não entre novamente no mesmo If                                                                                                                    'quando sair e entrar no formulário para novo cadastro, pois não poderá repetir os valores de preenchimento automático (Valores                                                                                                            'para preenchimento automático serão: 001A, 002A, 003A...
            UserForm1.tbx3.Value = "001A"


       ElseIf L.Value <> 002A Then
            UserForm1.tbx3.Value = "002A"

        ElseIf L.Value <> 003A Then
            UserForm1.tbx3.Value = "003A"
        
        ElseIf L.Value <>"004A" Then
            UserForm1.tbx3.Value = "004A"
            
        Else:
        UserForm1.tbx3.Value = "001A"
            
        End If
        Exit Sub
    Next
End Sub

 

//Dificuldades encontrada:

Toda que entro no formulário para o preenchimento, o dado a ser preenchido automaticamente, é preenchido com valor repetido. Pois como a estrutura de repetição lê as linhas em vazio ela interpretará como valor diferente.

 

 

Atenciosamente, Ariane.

Fico no aguardo, de uma possível ajuda.

Obrigada!

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.