Fruto da proeza do colega colaborador do fórum, Mauro Coutinho, esta versão do Modelo de Cadastro conta com a tela de pesquisa utilizando ao invés de um ListBox para mostrar os dados, o componente ListView, mais completo e amigável para visualização de navegação.
Confira essa versão na página oficial do aplicativo:
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
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
ThisWorkbook.Activate
Foi o suficiente para resolver o problema. No final, o método DefinePlanilhaDados fica da seguinte forma:
PrivateSub DefinePlanilhaDados()
Dim wb As Workbook
Dim caminhoCompleto AsStringDim ARQUIVO_DADOS AsStringDim PASTA_DADOS AsString
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 completoIf PASTA_DADOS = vbNullString Or PASTA_DADOS = ""Then
caminhoCompleto = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, vbNullString) & ARQUIVO_DADOS
ElseIf Right(PASTA_DADOS, 1) = "\"Then
caminhoCompleto = PASTA_DADOS & ARQUIVO_DADOS
Else
caminhoCompleto = PASTA_DADOS & "\" & ARQUIVO_DADOS
EndIfEndIfEndIf
caminhoArquivoDados = caminhoCompleto
EndSub
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!