Ir ao conteúdo
  • Cadastre-se

Erro de compilação da Macro


Posts recomendados

Olá, não sei o que estou fazendo de errado na criação de macro pelo VBA, eu preciso criar uma macro na qual chame uma tela de login e outra de cadastro sei que isso é muito simples, depois de ter criado a tela no UserForm, nomeia ela por exemplo "cadastro"  e criar a macro 

 

sub cadastro()

 

cadastro.Show

 

End sub

 

No momento que vou na planilha e vou fazer a atribuição da macro em um botão me  deparo com a seguinte cena, o nome da macro não está só o nome "cadastro" como deveria estar, esta assim: "nomedoarquivo!modulo1.cadastro" ou seja, o nome do aquivo salvo, o modulo onde foi criada a macro e o nome dada a ela na programação e quando executada ela da erro de compilação

 

Erro de compilação

Era esperado function ou variável

 

Já desinstalei o Office e instalei novamente e continua do mesmo jeito! 

Link para o comentário
Compartilhar em outros sites

Sim, e já havia feito antes mesmo de você pedir, e vir pedir ajuda no fórum, eu tenho uma versão mais antiga desse projeto na qual esse código funciona, nele tem um botão com uma macro atribuída que chama uma tela de cadastro, funciona perfeitamente, vou enviar os dois aquivos, o Certo e o Erro, o certo tem duas planilhas "lista de clientes" e "pesquisa", a lista lista de clietes mesmo depois de ter feito toda uma formatação, tinha deixado ela oculta, tornei ela visível para o fim dessa comparação, vá na tabela pesquisa, tem o 3 botões, cadastrar, pesquisar e limpar, a pesquisa se realiza na linha 4 onde você pode colocar em qualquer coluna referende ao  dado que tenha em mãos e ela puxa todos os outros, por favor faça uso e veja como funciona bem, até gera um número para cada cadastro, faça um cadastro e pesquise, no caso o botão de pesquisar, se clicado sem por nada na linha 4 ela puxa todos os clientes cadastrados, com eu disse, essa linha de projeto deixei de lado e estou a fazer outro com todas as telas,  login, cadastro e edição de dados de clientes, e que não apareça o exel, só apareça as telas, só aproveitei os códigos da tela de cadastro e nesse novo projeto estou por usar o mesmo método e único que sei até então para chamar as telas, estou usando macros pra fazer testes com botões antes de desabilitar o exel, com isso veio o erro e não consigo mais progredir. Por isso que não sei o que pode haver de errado se em uma planhia funciona e em outra não, agora eu tentei editar a planilha certa colocando outro nome e o erro aparece!

Planilhas Exel.rar

Link para o comentário
Compartilhar em outros sites

O unico erro que encontrei no arquivo é que quando você executa o formulario cadastro ele da erro de duplicidade de nome da macro.

 

Pois segundo ele ja existe uma macro com o nome novo.

 

Dei um novo nome para a macro abaixo

 

Private Sub novo2()

nome.Text = ""
nascimento.Text = ""
endereco.Text = ""
bairro.Text = ""
complemento.Text = ""
fones.Text = ""
RG.Text = ""
CPF.Text = ""
email.Text = ""

End Sub

 

E o formulario abriu 

 

É so este o erro que você tinha?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@CasaDoHardware Nâo meu caro, eu não consigo mais criar nada do tipo, criei agora uma macro com o nome de exel, eu nunca crie nada com esse nome, e dá erro, mandei uns prints, no momento que criou uma macho para chamar alguma userfrom ele já cria com erro, ao invés de só criar a macro com nome que dei que foi exel, ele cria "pasta1!módulo1.exel" e quando executado dá erro de compilação!Screenshot_1.jpgScreenshot_2.jpgScreenshot_3.jpg

Link para o comentário
Compartilhar em outros sites

Leandro, bom dia.

O nome da Sub (Exel no caso acima) não pode ser o mesmo que o nome do UserForm. você poderia, por exemplo, ter usado em seu lugar:

Sub MostraFormExel()
  exel.Show
End Sub

Se realmente for muuuito necessário usar o mesmo nome tanto para a Sub quanto para o UserForm tem que atribuir a classe do seu UserForm a uma variável primeiro para poder trabalhar com ela, mas já adianto que isso não é nem um pouco recomendável pois dá uma confusão da gota  e seu código fica muito instável ;)!

No caso acima ficaria:

Sub exel()
  Dim exel As VBAProject.exel
  Set exel = VBAProject.exel
  exel.Show
End Sub

(Ou usar resumidamente apenas VBAProject.exel.Show)

 

Mutatis mutandis, agora fica fácil adaptar para seu primeiro código (o do Cadastro).

 

Em 22/01/2017 às 17:50, CasaDoHardware disse:

...erro que encontrei no arquivo é que quando você executa o formulario cadastro ele da erro de duplicidade de nome da macro.

Pois segundo ele ja existe uma macro com o nome novo.

...

Private Sub novo2()

...

 

De fato, a Sub novo() está meio estranha e está gerando erro ao compilar. Não seria referente ao clicar do botão novo? Se for, tem que ser Sub novo_Click(). Verifique, por gentileza, corrigindo ou eliminando aquele trecho para o código poder prosseguir.

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em 24/01/2017 às 11:16, Edson Luiz Branco disse:

 

 

 

adicionado 9 minutos depois

@Edson Luiz Branco Obrigado, um coisa simples e eu não tinha conhecimento, por isso que meu outro arquivo funciona e nesse não, em relação ao problema do botão novo, eu mesmo não tinha conhecimento, pelo fato de nem ter testado e ter ficado preso esse problema da criação da macro. Agradeço também a @CasaDoHardware , por achar o erro no botão novo. E aos dois também agradeço paciência, coisa que o nosso primeiro colega não tem.

 

Muito Obrigado!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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