none
Erro no VBA Chamada de procedimento inválida ou argumento RRS feed

  • 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 argumento

    Private 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.

    segunda-feira, 1 de junho de 2020 12:36

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
    segunda-feira, 1 de junho de 2020 13:55

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

    segunda-feira, 1 de junho de 2020 13:23
  • 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()
    segunda-feira, 1 de junho de 2020 13:46
  • Por isso preciso incluir no vba
    segunda-feira, 1 de junho de 2020 13:47
  • 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
    segunda-feira, 1 de junho de 2020 13:55