
Como feedback de um dos usuários do nosso Modelo de Cadastro em Excel, foi descoberto um erro (ou bug, mas é que culpar um inseto por tudo é meio injusto, não?) que assola a versão 3 do modelo.
Quando a seguinte sequência é de ações é executada:
- Na tela de Pesquisa, clicar no botão Exportar;
- Clicar 2x em um registro
- Clicar no botão Pesquisar
Um erro é gerado. A explicação é simples. Como a função exportar cria uma nova planilha e a apresenta, porém, mantém a tela de Pesquisa aberta, mas muda o contexto do Workbook, ou seja, o ThisWorkbook no VBA passa a valer para a planilha exportada. Quando a linha:
ARQUIVO_DADOS = Range("ARQUIVO_DADOS").Value |
no método DefinePlanilhaDados é executada, torna-se inválida, pois a área nomeada “ARQUIVO_DADOS” só existe na pasta de trabalho ModeloCadastro_FrontEnd.xls. Existem algumas formas de corrigir o problema, mas, para simplificar a correção, coloquei a seguinte linha antes da mencionada acima:
ThisWorkbook.Activate |
Foi o suficiente para resolver o problema. No final, o método DefinePlanilhaDados fica da seguinte forma:
Private Sub DefinePlanilhaDados() Dim wb As Workbook Dim caminhoCompleto As String Dim ARQUIVO_DADOS As String Dim PASTA_DADOS As String ThisWorkbook.Activate ARQUIVO_DADOS = Range("ARQUIVO_DADOS").Value PASTA_DADOS = Range("PASTA_DADOS").Value If ThisWorkbook.Name <> ARQUIVO_DADOS Then 'monta a string do caminho completo If PASTA_DADOS = vbNullString Or PASTA_DADOS = "" Then caminhoCompleto = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, vbNullString) & ARQUIVO_DADOS Else If Right(PASTA_DADOS, 1) = "\" Then caminhoCompleto = PASTA_DADOS & ARQUIVO_DADOS Else caminhoCompleto = PASTA_DADOS & "\" & ARQUIVO_DADOS End If End If End If caminhoArquivoDados = caminhoCompleto End Sub |
O modelo já está corrigido na sua própria página. Os agradecimentos vão para a colega Fernanda Esper, que identificou e reportou o problema. Valeu!