Tag Archives: Modelo Cadastro

Update – Modelo de Cadastro com ListView

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.

Modelo Cadastro Excel VBA

Confira essa versão na página oficial do aplicativo:

https://www.tomasvasquez.com.br/blog/modelo-de-aplicativo-de-cadastro-em-vba-no-microsoft-excel

Confira também no nosso fórum outras versões e alterações no modelo:

http://www.tomasvasquez.com.br/forum/viewforum.php?f=5

Bom proveito!

Update – Ajuste no Modelo de Cadastro Versão 3

O Bug
O Bug

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:

  1. Na tela de Pesquisa, clicar no botão Exportar;
  2. Clicar 2x em um registro
  3. 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!