Notifications
Clear all

Userform VbModal = false, funciona as vezes. TCC

9 Posts
2 Usuários
0 Reactions
1,748 Visualizações
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

Bom dia,

Estou com um projeto (Modelo_Interface_TFC_EXEMPLO_LIMPO), meu TCC, que contém vários Userforms. A idéia é que eu consiga abrir a Userform 1 que tem algumas scrollbars que alteram variáveis e os valores destas são atualizadas na Userform1. Para detalhar ainda mais os valores (já que a userform já estava com bastante informação), criei uma outra Userform2. Para que o usuário consiga manipular a Userform1 enquanto a Userform2 está aberta, pesquisei e vi que a solução é definir as userforms com vbModeless.

O que é curioso é que estou tendo alguns erros no programa principal. Para simplificar e testar a programação montei um exemplo (VBModalExample), com a programação dos objetos exatamente igual ao projeto principal. Neste exemplo, tudo funciona perfeitamente! Não consigo identificar a origem do problema.

O erro que ocorre é: "Erro em tempo de execução '380': Não foi possível definir a propriedade Value. Valor de propriedade inválido"

Como nunca trabalhei com userforms Modeless gostaria de saber se alguém consegue achar a razão porque em um funciona enquanto no outro não...

PS: No projeto principal, tive que colar valores e omitir muitas coisas nas sheets, mas isso nao deveria afetar a operação das userforms.

Em anexo os dois arquivos compactados para quem puder ajudar.

Obrigado pela atenção e tempo.
Att,
Luis

 
Postado : 05/11/2015 7:18 am
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

Correção, para o projeto não é a Userform2 que precisa abrir e ser manipulada ao mesmo tempo que a userform1, e sim a Userform4. Que aparece ao apertar o botão "Detalhar custo insumos" (userform1.commandbutton5)
Não consigo editar o post.

 
Postado : 05/11/2015 8:01 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia finaljustice,

Cara, o problema não é no ShowModal, estava no valor a ser atribuido nas scroll's.

Vê se ajuda.

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/11/2015 8:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Aparentemente no formulario interface, os scrollbars "estão assumindo" um valor padrão; e ao tentar redefinir o valor para inferior a esse "padrão" gera o erro
Por exemplo o ScrollBar1 assume o valor 10. Para contormar seria algo =/- assim

Private Sub TextBox7_Change()
 If DisableUFEvents Then Exit Sub
    DisableUFEvents = True
    If UserForm1.TextBox7 < 1 Then
        UserForm1.ScrollBar1 = 10 'UserForm1.TextBox7
    Else
        UserForm1.ScrollBar1 = UserForm1.TextBox7
    End If
    DisableUFEvents = False
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 05/11/2015 8:51 am
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

Aparentemente no formulario interface, os scrollbars "estão assumindo" um valor padrão; e ao tentar redefinir o valor para inferior a esse "padrão" gera o erro
Por exemplo o ScrollBar1 assume o valor 10. Para contormar seria algo =/- assim

Private Sub TextBox7_Change()
 If DisableUFEvents Then Exit Sub
    DisableUFEvents = True
    If UserForm1.TextBox7 < 1 Then
        UserForm1.ScrollBar1 = 10 'UserForm1.TextBox7
    Else
        UserForm1.ScrollBar1 = UserForm1.TextBox7
    End If
    DisableUFEvents = False
End Sub

Bom dia,

Obrigado por responder!

Fiz alterações como a que você sugeriu, mas o problema persiste... Não consigo entender porque no exemplo que fiz este problema não ocorre.
Porque este erro ocorre somente quando coloquei as userforms para funcionar vbmodeless ao mesmo tempo?

Basicamente alterei todas os controles das textbox para ficar neste "padrão": (só para ver se o problema não persistia depois iria avaliar os valores)

If UserForm1.TextBox12 < 1 Then
        UserForm1.ScrollBar6 = 10 'Val(Me.TextBox7.Text)
    Else
        UserForm1.ScrollBar6 = Val(UserForm1.TextBox12.Text)
    End If

Mas o problema persistiu...Ehm... eu realmente não estou entendendo.

Obrigado pela atenção e ajuda, se tiver alguma outra sugestão, fico grato.

 
Postado : 06/11/2015 7:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Porem nem todos os scroll's "assumem" esse valor, verificou o modelo que o colega Bernardo passou acima?

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2015 7:51 am
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

Porem nem todos os scroll's "assumem" esse valor, verificou o modelo que o colega Bernardo passou acima?

Boa tarde,

Baixei, testei e este também não funciona. Olhei a programação e não percebi alterações. Você testou o arquivo e ai está funcionando?

Obrigado!

 
Postado : 06/11/2015 11:24 am
(@finaljustice)
Posts: 91
Trusted Member
Topic starter
 

Bom dia finaljustice,

Cara, o problema não é no ShowModal, estava no valor a ser atribuido nas scroll's.

Vê se ajuda.

Qualquer coisa da o grito.
Abraço

Boa tarde Bernardo,
Baixei o arquivo que você disponibilizou porém, este não está funcionando e não encontrei nenhuma alteração na programação, você por acaso fez alguma alteração? Se sim você poderia exemplificar ou me direcionar por gentileza?

Como o Reinaldo e você comentaram sobre os valores atribuidos nas scrolls, estava fazendo isso pois diferentes scrolls precisam variar dentro de certos limites para que o resto do programa funcione. O que não está claro pra mim também é; se este é o problema, porque ele só está ocorrendo quando mudei as userforms para vbmodelss para poder manipular a userform1 enquanto a userform4 está exibida??

Obrigado pela ajuda!
Luis

 
Postado : 06/11/2015 11:38 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O arquivo disponibilizado pelo Bernardo, tem alteração nas rotinas TextBox?_Change.r
Ou seja ao retornar o valor para a scroll multiplique pelo valor que dividiu no inicio
Bem não sei dizer o porque isso ocorre em modless, mas a proposta do colega Bernardo e mais simples e direta.

Veja no modelo TextBox7_Change....

UserForm1.ScrollBar1 = UserForm1.TextBox7 * 100

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/11/2015 1:24 pm