Ir ao conteúdo

Excel Intervalo de extração tem um nome de campo ausente ou inválido


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

@Jmbs Apague os dados da planilha Relatorio e na função AdvancedFilter de Sub Filtro corrija o parâmetro CopyToRange para A1 (está como A1:E1).

 

Deixe o range filtrado assim,

 

Set filtrada = _
Planilha5.Range(Planilha5.Cells(1, 1), Planilha5.Cells(L - 1, 5)).Offset(1)

 

Postado

@Midori Boa tarde,

 

Fiz as modificações. Porém só filtra a 1ª coluna.

Quando vou digitar o próximo critério ocorre:

Erro em tempo de execução '1004'

Erro em definição de aplicativo ou de definição de objeto.

 

Atenciosamente

Postado

@Jmbs Esse erro acontece quando o filtro não retorna nenhum dado já que Cells(L - 1, 5) vai ficar com a linha = 0. Para evitar isso incremente L logo abaixo da atribuição assim,

 

L = Planilha5.Range("A1").CurrentRegion.Rows.Count
If L = 1 Then L = L + 1

 

58 minutos atrás, Jmbs disse:

Fiz as modificações. Porém só filtra a 1ª coluna.

As que testei estão filtrando, mas antes tem que limpar a planilha Relatorio. Isso pode ser feito na Sub Filtro antes de AdvancedFilter,

 

Planilha5.[A:M].Clear
BASE.AdvancedFilter xlFilterCopy, CRT, Planilha5.Range("A1")

 

Mas algumas colunas da planilha estão apenas formatadas, p.ex a nota fiscal que está como 000.151 na verdade é a 151, a que está como 015.524 é a 15524, etc. Então se no TextBox entrar com 000.151 ou 015.524 não vai filtrar, já que o correto seria 151 e 15524.

 

  • Curtir 1
Postado

@Midori Boa noite!

 

Em função de minhas limitações em VBA, apesar de toda sua gentileza e didática não consegui adequar a minha planilha. Então tentei aproveitar as informações de outra planilha. Porém, ficaram duas textbox que não consegui configurar para a pesquisa e se possível gostaria de contar com a sua colaboração.

 

Minha dificuldade:

TextBox Vencimento - não consigo configurar para filtrar  

TextBox Item Planilha, consigo filtrar os números inteiro, já os números tipo 5.8 , 5.7 que são fundamentais ... não consigo.

 

Atenciosamente

 

testar (2) - Postar.7z

Postado

@Jmbs A data pode ser por causa do formato, com essas alterações consegui filtrar,

 

Private Sub TextBox6_Change()
    If Len(TextBox6.Text) = 2 Then
        TextBox6 = TextBox6 + "/"
    End If

    If Len(TextBox6.Text) = 5 Then
        TextBox6 = TextBox6 + "/"
    End If

    If Len(TextBox6.Text) = 8 Or Len(TextBox6.Text) = 10 Then
        If IsDate(TextBox6.Text) Then
            Planilha2.Range("T30") = CDate(Format(TextBox6.Text, "DD/MM/YYYY"))
            Call Filtro
            Call Total_Itens_Listbox
        End If
    End If
End Sub

 

O filtro do Item com ponto só funcionou colocando asterisco, veja se assim resolve,

 

Private Sub TextBox4_Change()
    If InStr(TextBox4, ".") Then
        Planilha2.Range("R30") = "*" & TextBox4 & "*"
    Else
        Planilha2.Range("R30") = TextBox4
    End If
    
    Call Filtro
    Call Total_Itens_Listbox
End Sub

 

  • Curtir 1
Postado

@Jmbs Para filtrar o período aumente o tabela dos critérios (e na macro) que está como O29:T30 para O29:V30. Nessas duas últimas colunas adicionadas coloque o campo DATA EMISSÃO.

 

Aí o primeiro TextBox vai escrever em U30 e o segundo em V30 colocando o critério: >= data inicial e <= data final.

 

  • Curtir 1
Postado

@Midoriboa tarde!

 

Tentei dessa forma porém não executou.

 

Private Sub TextBox7_Change()
Planilha2.Range("U30") = TextBox7 >= datainicial
Call Filtro
Call Total_Itens_Listbox
End Sub

 

 

Private Sub TextBox8_Change()
Planilha2.Range("V30") = TextBox8 <= datafinal
Call Filtro
Call Total_Itens_Listbox
End Sub

 

Atenciosamente,

Postado

@Midori

 

Ficaria assim ou estou fazendo errado,  porque não consegui filtrar..

 

Private Sub TextBox7_Change()
Planilha2.Range("U30") = ">=" & TextBox7
Call Filtro
Call Total_Itens_Listbox
End Sub

 

 

Private Sub TextBox8_Change()
Planilha2.Range("V30") = "<=" & TextBox8
Call Filtro
Call Total_Itens_Listbox
End Sub

 

 

Atenciosamente

  • Solução
Postado

@Jmbs Além de colocar os critérios tem que formatar a data como comentei acima no caso do TextBox6.

 

Fiz uma Sub para usar nos TextBox com data, aqui deu certo, veja se resolve,

 

Private Sub TextBox7_Change()
    Call FormataData(Planilha2.[U30], TextBox7, ">=")
End Sub

Private Sub TextBox8_Change()
    Call FormataData(Planilha2.[V30], TextBox8, "<=")
End Sub

Sub FormataData( _
    Campo As Range, _
    Controle As MSForms.TextBox, _
    Optional Criterio As String = "")
    
    If Len(Controle.Text) = 2 Then Controle = Controle & "/"
    If Len(Controle.Text) = 5 Then Controle = Controle & "/"
    If Len(Controle.Text) = 8 Or Len(Controle.Text) = 10 Then
        If IsDate(Controle.Text) Then
            Campo = Criterio & CStr(Format(Controle.Text, "MM/DD/YYYY"))
            Call Filtro
            Call Total_Itens_Listbox
        End If
    End If
End Sub

 

  • Curtir 1

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