Logo Hardware.com.br
Bruno Rimoldi
Bruno Rimold... Membro Junior Registrado
56 Mensagens 11 Curtidas

[Resolvido] Uso do IF com 2 hipóteses - VBA

#1 Por Bruno Rimold... 05/01/2018 - 15:47
Boa tarde pessoal,

não estou conseguindo fazer com que esse codigo rode conforme o previsto.

A celula J24 e J23 são datas (mm/aaaa) e se forem iguais fazer a condição abaixo "Apuração ou Reapuração" caso seja "ISS". Se for diferente de ISS, ou seja, qualquer outro imposto, a condição é outra. Quando passo o mouse no Depurador (conforme anexo), aparece o resultado Erro 2015.

Não consigo postar a planilha aqui porque é muito grande e para chegar até esse procedimento passa por muitas SUBs.

            If Sheet5.Range("J14&quot = "ISS" And Sheet5.Range("J24&quot = Sheet5.Range("J23&quot Then
Sheets("DOF&quot.Range("G4&quot = "APURAÇÃO"
Else
Sheets("DOF&quot.Range("G4&quot = "REAPURAÇÃO"
End If

If Sheet5.Range("J14&quot <> "ISS" And Sheet5.Range("J24&quot = Right(Sheet5.Range("J22&quot, 7) Then
Sheets("DOF&quot.Range("G4&quot = "APURAÇÃO"
Else
Sheets("DOF&quot.Range("G4&quot = "REAPURAÇÃO"
End If

Anexos

Basole
Basole Geek Registrado
945 Mensagens 596 Curtidas
#2 Por Basole
05/01/2018 - 16:41
Isso pode estar ocorrendo por causa da formula esta como [HASHTAG]#VALUE[/HASHTAG]!
Tente usar o seerro para verificar a condição.
Exemplo:
[code=vb]
If Not IsError(Sheet5.Range("J23"))Then'
If Sheet5.Range("J14") = "ISS" And Sheet5.Range("J24") = Sheet5.Range("J23") Then
Sheets("DOF").Range("G4") = "APURAÇÃO"
Else
Sheets("DOF").Range("G4") = "REAPURAÇÃO"
End If

If Sheet5.Range("J14") <> "ISS" And Sheet5.Range("J24") = Right(Sheet5.Range("J22"), 7) Then
Sheets("DOF").Range("G4") = "APURAÇÃO"
Else
Sheets("DOF").Range("G4") = "REAPURAÇÃO"
End If
EndIf
[/code]
Click em Curtir se a resposta foi útil. boa.gif Dê retorno por favor. Se resolveu, atencao_regras.gif Altere o Titulo como [ Resolvido ] comemorando.gif
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#3 Por Marcelo G Pr...
05/01/2018 - 21:47
Se a sugestão do Basole nao funcionar tente assim:

If Sheets("nome da planilha&quot.Range("J14&quot.value = "ISS" And Sheets.("nome da planilha&quot..Range("J24&quot.value = Sheets.("nome da planilha&quot.Range("J23&quot.value Then
Sheets("DOF&quot.Range("G4&quot = "APURAÇÃO"
Else
Sheets("DOF&quot.Range("G4&quot = "REAPURAÇÃO"
End If


Onde eu coloquei nome da planilha troque pelo nome da sua planilha.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Bruno Rimoldi
Bruno Rimold... Membro Junior Registrado
56 Mensagens 11 Curtidas
#4 Por Bruno Rimold...
06/01/2018 - 18:46
Marcelo, boa tarde,

o código que o Basole me orientou não funcionou e o que o você me mandou não rodou também. O código ficou assim:

            If Sheets("MACRO PAPEL DE TRABALHO&quot.Range("J14&quot.Value = "ISS" And Sheets("MACRO PAPEL DE TRABALHO&quot.Range("J24&quot.Value = Sheets("MACRO PAPEL DE TRABALHO&quot.Range("J23&quot.Value Then
Sheets("DOF&quot.Range("G4&quot = "APURAÇÃO"
Else
Sheets("DOF&quot.Range("G4&quot = "REAPURAÇÃO"
End If


O erro foi "Erro em tempo de execução '13': Tipos Incompatíveis"
Marcelo G Prudencio
Marcelo G Pr... Geek Registrado
1K Mensagens 227 Curtidas
#5 Por Marcelo G Pr...
06/01/2018 - 22:00
Aparentemente o codigo esta correto, o unico erro que acredito ser possivel é o nome da planilha estar diferente do codigo

Se na planilha estiver diferente da erro.

Sheets("NOME DA PLANILHA") é diferente de Sheets("Nome da Planilha") e qualquer outra variação que vc tiver.
Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho." - Autor Desconhecido
Simplifica que simples fica. - Nicole Tomazella.
"O Simples é Sempre Melhor Que o Complicado" - Jorge Paulo Lemann.
Bruno Rimoldi
Bruno Rimold... Membro Junior Registrado
56 Mensagens 11 Curtidas
#6 Por Bruno Rimold...
07/01/2018 - 11:45
Bom dia Marcelo e Basole,

acredito que desse jeito que expliquei no arquivo anexo PDF dá pra entender melhor. O que eu preciso é de uma condição que o código leia o campo Tributo e se for igual a ISS faça assim, se for diferente, faça assim. Mas acho que o VBA não está indo com minha cara eheheh.

Anexos

Bruno Rimoldi
Bruno Rimold... Membro Junior Registrado
56 Mensagens 11 Curtidas
#8 Por Bruno Rimold...
08/01/2018 - 10:52
Bom dia Marcelo e Basole,

consegui resolver o enigma eheheh. Sem a ajuda de vocês não teria conseguido. O codigo ficou assim:

If Sheet5.Range("J14&quot <> "ISS" And Sheet5.Range("J24&quot = Right(Sheet5.Range("J22&quot, 7) Then
Sheets("DOF&quot.Range("G4&quot = "APURAÇÃO"
Else
Sheets("DOF&quot.Range("G4&quot = "REAPURAÇÃO"
End If

If Not IsError(Sheet5.Range("J23&quot) Then
If Sheet5.Range("J14&quot = "ISS" And Sheet5.Range("J24&quot = Sheet5.Range("J23&quot Then
Sheets("DOF&quot.Range("G4&quot = "APURAÇÃO"
Else
Sheets("DOF&quot.Range("G4&quot = "REAPURAÇÃO"
End If
End If


Muito obrigado e quando eu crescer quero ser igual a vocês ehehehehehhehe...

Abraços,
Bruno
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal