Usuário com melhor resposta
Erro no VBA Chamada de procedimento inválida ou argumento

Pergunta
-
Quero criar uma condição no vba que, quando a coluna da data de vencimento estiver vazia, outra nova coluna retornará 'True' se não 'False'
o erro que está aparecendo no Excel é este: Erro em tempo de execução 5: Chamada de procedimento inválida ou argumentoPrivate Sub cmdaon_Click() Dim counter As Integer Dim rng1 As Range, rng2 As Range, rng3 As Range Set rng1 = destSheet1.Range("A:K") Set rng2 = destSheet2.Range("A:K") Set rng3 = destSheet3.Range("A:K") If IsEmpty(rng1("K1:K").Value) Then destSheet1.Range("L1:L").Value = "TRUE" Else destSheet1.Range("L1:L").Value = "FALSE" End If End sub
Alguém poderia me ajudar ? Não estou conseguindo identificar o erro.
Respostas
-
Entendi. De toda forma, você precisa fazer um Loop no intervalo desejado e avaliar as condições uma a uma. Há várias formas de fazer: você pode utilizar um intervalo nomeado, avaliar a dimensão do seu intervalo, definir uma condição para parar a análise, etc. Você pode utilizar um "For", "For Each", "Do While", etc.
Mas caso seu intervalo seja muito grande, analisar célula a célula pode ser lento e ineficiente. Neste caso o mais recomendado é trabalhar com vetores e/ou matrizes: Carregue os dados numa variável, faça um "For" nela e escreva os resultados em outra variável. Em seguida, ao final do Loop, cole o vetor ou matriz resultante na planilha em um passo.
Consegue programar desta forma?
Abraço.
Filipe Magno
- Marcado como Resposta DeborahRocha segunda-feira, 1 de junho de 2020 18:52
Todas as Respostas
-
Bom dia.
Não entendi o que pretende. Se quer avaliar um determinado intervalo deve-se fazer um Loop, não dá pra fazer diretamente. No seu caso específico, bastaria uma fórmula, sem necessidade de uso do VBA (há algum impeditivo).
Além disso, a sintaxe:
("K1:K")
não faz sentido. Por favor, explique melhor.
Filipe Magno
-
Bom dia,
essa parte do código é apenas a condição, o código inteiro não está ai. Estou fazendo uma automação, e toda vez que for executado o vba completo (são dados que vem de outras planilhas), ele vai9 executar essa condição junto.
A única parte do cálculo que não esta funcionando é essa condição .
O resto do código funciona perfeitamente.
Isso é atualizado ao clicar nesse botão
cmdaon_Click()
-
-
Entendi. De toda forma, você precisa fazer um Loop no intervalo desejado e avaliar as condições uma a uma. Há várias formas de fazer: você pode utilizar um intervalo nomeado, avaliar a dimensão do seu intervalo, definir uma condição para parar a análise, etc. Você pode utilizar um "For", "For Each", "Do While", etc.
Mas caso seu intervalo seja muito grande, analisar célula a célula pode ser lento e ineficiente. Neste caso o mais recomendado é trabalhar com vetores e/ou matrizes: Carregue os dados numa variável, faça um "For" nela e escreva os resultados em outra variável. Em seguida, ao final do Loop, cole o vetor ou matriz resultante na planilha em um passo.
Consegue programar desta forma?
Abraço.
Filipe Magno
- Marcado como Resposta DeborahRocha segunda-feira, 1 de junho de 2020 18:52