Ir ao conteúdo

Formulário no Excel


RafaVillani

Posts recomendados

Postado

Galera estou desenvolvendo um pequeno sistema, usando o VB do Excel, como meu bando de dados são as planilhas do Excel, não quero que os usuários consigam acessar tais planilhas, estou pelejando com varios códigos para desabilitar o botão fechar dos forms, mas não estou tendo sucesso, alguem poderia me dar uma luz?

Postado

Valeu amigo, funcionou direitinho, agora estou com outro proplema, como faço para fechar apenas um userform? Estava tentando colocando um END como no Delphi, mas com ele todos os outros forms se fecham tambem, O que devo fazer?

Postado

Use a instrução Unload, exemplo:


Private Cancelar As Integer

Private Sub CommandButton1_Click()
   Cancelar = 0
   Unload Me
End Sub

Private Sub UserForm_Initialize()
   Cancelar = 1
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
   Cancel = Cancelar
End Sub

Postado

Amigo existe outra maneira de se fazer isso, pois com o evento UNLOAD não consegui. Na ajuda do excell achei dessa maneira:

' Este é o procedimento do evento Initialize para UserForm1

Private Sub UserForm_Initialize()

Load UserForm2

UserForm2.Show

End Sub

' Este é o evento Click para UserForm2

Private Sub UserForm_Click()

Unload UserForm2

End Sub

' Este é o evento Click para UserForm1

Private Sub UserForm_Click()

Unload UserForm1

End Sub

consegui fazer em um novo arquivo, mas no meu sistema não acontece nada.

Postado

Provavelmente está dando erro no seu programa, porque no trecho abaixo, você esta tentando fechar UserForm1 (que é o nome padrão de um formulário, o seu deve ser diferente). Por isso você deve usar Me (Unload Me), Me é uma palavra chave que se refere ao objeto onde o código está sendo executado, neste caso o Formulário.

' Este é o evento Click para UserForm1

Private Sub UserForm_Click()

Unload UserForm1

End Sub

Postado

Só uma observação...Não sei se você percebeu, mas eu fiz uma correção no primeiro código que postei. Com Cancelar recebendo 1 em UserForm_Initialize, quando postei a primeira vez estava dando erro mesmo.

Postado

Acabei de testar o exemplo da ajuda em outra planilha, e percebi que realmente o fato de não funcioar visto que o botão fechar esta desabilitado.

Testei a priveira vez sem este comando:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = 1

End Sub

na segunda vez testei com ele e não funcionou.

Postado

Amigo,

Vamos tentar achar o problema passo a passo, porque este é um procedimento simples e deve ser algum detalhe que está fazendo com que o código não funcione corretamente.

1° Crie uma nova planilha, insira um formulário e um botão.

2° Cole o código abaixo.


Private Cancelar As Integer

Private Sub CommandButton1_Click()
  Cancelar = 0
  Unload Me
End Sub

Private Sub UserForm_Initialize()
  Cancelar = 1
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  Cancel = Cancelar
End Sub

Observe que com o código acima, você não vai conseguir fechar o formulário pelo botão (X). Você só vai conseguir fechar o formulário pelo botão.

Essa é a variável, que vai nos "dizer" se queremos ou não, habilitar o botão (X).

Private Cancelar As Integer

Quando Cancelar for igual a 1, (X) ficará desabilitado e quando for igual a zero, volta a seu estado original.

É isso o que fazemos no Botão que inserimos, antes de usar Unload Me, Cancelar recebe zero, para (X) voltar a seu estado original.

Private Sub CommandButton1_Click()

Cancelar = 0

Unload Me

End Sub

Com os procedimentos acima, você pode aplicar estes códigos em qualquer formulário.

Postado

Acho que sei o que esta havendo, para desabilitar o botão fechar usamos o seguinte código:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = 1

End Sub

e para fechar os fomrs usamos este:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = Cancelar

End Sub

será que está conflitando as variaveis?

Postado

Funcionou, mas consegui fechar pelo botão (X) também, o que esta acontecendo é que no evento Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer), cancel esta recebendo 1 e ao mesmo tempo recebendo cancelar, e se coloco outro evento Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer), aparece um mensagem "Nome repetido encontrado: QueryClose".

Postado

É isso mesmo:

Desconsidere este:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = 1

End Sub

Use este (que é o mesmo que usei na ultima mensagem:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = Cancelar

End Sub

Postado

Oliver, continua a mesma coisa, consigo fechar pelo commandbutton e pelo botão (X), eis o meu código:

Private Sub UserForm_Initialize()

OptionButton1.Value = True

Cancelar = 1

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = Cancelar

End Sub

Private Sub CommandButton2_Click()

Cancelar = 0

Unload Me

End Sub

Postado

Mas você não declarou a variável Cancelar:

Private Cancelar As Integer

Esta declaração é fundamental para o funcionamento do código, com certeza é isso, faça a declaração que vai funcionar.

Postado
Postado Originalmente por RafaVillani@04 de novembro de 2005, 18:13

Oliver não sei se tem a ver, mas em todos os meus forms coloquei o evento:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Cancel = 1

End Sub

Rafael,

Esqueça este "Cancel = 1", dessa forma não vai dar certo. Cancel deve receber o valor da variável Cancelar (Cancel = Cancelar).

Postado

As colunas? Nome, Telefone-01...

Se for isso, vamos supor que os dados estejam no intervalo A1:C4, onde, exemplo: A1 = Codigo, B1 = Nome e C1 = Endereço. O Código abaixo lista a tabela no controle ListBox1, observe o uso das propriedades ColumnHeads e ColumnCount.


Private area As Range

Private Sub UserForm_Initialize()

Set area = Range("A2:C4")

With Me.ListBox1
   
   .ColumnHeads = True
   .ColumnCount = area.Columns.Count
   
   .RowSource = area.Address

End With
End Sub

Arquivado

Este tópico foi arquivado e está fechado para 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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!