terça-feira, 23 de outubro de 2012

Função para Auxiliar Consultas no Access

Pessoal,

Segue função que fiz para auxiliar a criação de consultas no Access com critérios do tipo "[Variável] Ou [Variável] Ou [Variável] Ou ...". Antes, quando eu tinha um conjunto de variáveis a serem filtradas em uma consulta, era necessário executar um procedimento manual para preenchimento dos "Ou"s entre as variáveis. Usando a fórmula, o trabalho fica menor e muito mais rápido. Segue o código:


Function Consulta(ByVal Space As Range)

'
'
'   Função para gerar uma chave com conteúdos das células separados por " Ou ",
' para usá-las em consultas no Access.


    Dim rng As Range, str As String
    
    str = ""
    
    On Error Resume Next
    For Each rng In Space.Areas
        For Each cell In rng
            str = str & cell.Value & " Ou "
        Next
    Next
    
    Consulta = Left(str, Len(str) - 4)
    
End Function

Durante o uso da função, cabe uma observação: Para seleções múltiplas (mais de uma área - segurando Ctrl durante a seleção), usar um parêntesis adicional, indicando que todas as áreas devem ser associadas

à uma única variável do tipo "Range", acessada através de rng.Areas(n), onde n é o índice da área. Por exemplo: =Consulta(Área) ou =Consulta((Múltiplas_Áreas)). Seguem imagens ilustrativas dos dois casos, com uma única área e múltiplas áreas, respectivamente:




O código também serve como base para a criação de outras funções para gerar chaves de consulta automaticamente, por exemplo do tipo "<> [Variável] E <> [Variável] E <> [Variável] E <> ...".

Bom, é isso. Espero que tenham gostado.

Para dúvidas e/ou sugestões, por favor, escrevam!

Até a próxima!