Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aureo2006

Problema com For...Next...

Recommended Posts

Eu estou usando os comandos For...Next para procurar e ver se um determinado formulario está aberto, e executar determinados comandos caso ele esteja aberto. O formulario no qual estou tentando usar estes comandos é aberto de diversos formas com funções diferentes. Numa das funções, caso ele verifique que o form procurado está aberto ele executa os comandos determinados. Porém, se este formulario não estiver aberto, ele simplismente deveria fechar o formulario no qual estão inseridos os comandos For..Next. Pois bem. O problema é o seguinte: se o formulario que ele procura está ativo, ele executa os comandos desejados corretamente. Porém, se não está, retorna um erro, informando que "o subíndice está fora do intervalo". Alguem saberia me ajudar neste problema? Eis o código que estou usando:

 

Private Sub cmdClose_Click()Dim v As IntegerFor v = 0 To Forms.Count  If Forms(v).Name = "frmAcervo" Then	frmAcervo.Adodc2.Refresh	frmAcervo.DataCombo2.Refresh	Unload MeExit ForEnd IfNextUnload Me End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que você disse de caso o formulário não seja encontrado o atual fechar você tem que fazer assim:

 

Private Sub cmdClose_Click()Dim v As Integer, frmaberto as booleanfrmaberto = falseFor v = 0 To Forms.Count  If Forms(v).Name = "frmAcervo" Then	frmAcervo.Adodc2.Refresh	frmAcervo.DataCombo2.Refresh	frmaberto = true     End IfNextif frmaberto = false then Unload Me End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo...inicialmente obrigado pela tentativa de ajuda. Porém, quero te informar que o problema persiste Pelo que eu entendi eu deveria substituir o “frmaberto” pelo nome do formulário aberto que eu estaria verificando. Fiz isso, e ele não reconheceu os comandos que eram para serem executados caso o form estivesse aberto. A mesma situação ocorre com o formulário estando aberto ou fechado. Ele nao reconhece os comandos. Na situação anterior ele dava problema somente na hipótese do formulário estar fechado, que aparecia a mensagem que eu descrevi. O que poderia ser?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, acho que saquei o problema.

É assim na maioria das vezes as matrizes de objetos iniciam no zero, mas quando você conta quantos itens tem na matriz sempre dará um a mais do que o maior índice.

 

Por isso na hora do for você tem que tirar 1 do forms.count:

Private Sub cmdClose_Click()Dim v As IntegerFor v = 0 To Forms.Count - 1  If Forms(v).Name = "frmAcervo" Then	frmAcervo.Adodc2.Refresh	frmAcervo.DataCombo2.Refresh	Unload MeExit ForEnd IfNextUnload Me End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.