Chamar função do co...
 
Notifications
Clear all

Chamar função do combobox.

9 Posts
3 Usuários
0 Reactions
1,673 Visualizações
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Pessoal,

Estou tendo problema para fazer algo que, a meu ver, é simples, mas chega de ficar na tentativa e erro. Creio que vocês possam explicar o motivo.

Vamos lá..

No sistema de Avaliação de Desempenho dos empregados aqui da empresa, existe vários tópicos a serem respondidos, exemplo:

1 - Organização
2 - Produção
3 - Comunicação
4 - ...

Para respondê-los, o Avaliador preencherá o combobox que encontra-se em frente a cada tópico. As respostas vão de A a D, onde A é ótimo e as demais em valores decrescente.

Para que saibamos a nota da Avaliação do empregado avaliado, eu utilizo o código abaixo no comando Exit de cada combobox, o qual soma os valores em uma única textbox.

Private Sub ComboBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If ComboBox5.Text <> "A" And ComboBox5.Text <> "D" Then

"msgbox "Verifique essa resposta e tente novamente!"

TextBox8.Text = ""

End If



If ComboBox5.Text <> "" And ComboBox5.Text = "A" Then

TextBox77.Text = [i12]


End If

If ComboBox5.Text <> "" And ComboBox5.Text = "B" Then

TextBox77.Text = [j12]


End If

If ComboBox5.Text <> "" And ComboBox5.Text = "C" Then

TextBox77.Text = [k12]

End If

If ComboBox5.Text <> "" And ComboBox5.Text = "D" Then

TextBox77.Text = [l12]

End If

Call soma1


Isso funciona perfeitamente quando o avaliador realiza um novo cadastro, ou melhor, isso funciona sempre quando o avaliador seleciona/altera uma letra do tópico e saia do mesmo.

Agora trabalho com o intuito de, em um segundo momento, o avaliador ter acesso a essas informações e, automaticamente, sem usar o comando Exit dos combobox's, a somatória seja apresentada.

eu já tente utilizar o comando call no initilialize da userform, mas não deu em nada. O que vocês sugerem?

 
Postado : 18/02/2015 12:10 pm
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Pessoal,

Tentando ser mais sucinto:

Eu preciso de uma função que faça com que todos os combobox executem os comando Exit automaticamente!

Tentei algo com o Refresh, mas nao deu!

Quero uma função que execute todos os comando Exit dos combobox de um form.

 
Postado : 19/02/2015 5:20 am
(@gtsalikis)
Posts: 2373
Noble Member
 

viewtopic.php?f=7&t=12600

 
Postado : 19/02/2015 2:02 pm
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Gilmar,

Sou usuário assíduo do Planilhando e, por conta disso, conheço as regras e a cultura do fórum.

Sei que o nosso tempo é escasso, uma vez que o nosso dia a dia administrativo as vezes nos engole.

Realmente preciso resolver isso em sentido emergencial, mas as reincidência das minhas respostas teve o objetivo maior de exemplificar, deixar mais claro a minha dúvida.

Peço a sua ajuda, por favor!

 
Postado : 19/02/2015 2:29 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Cara, eu sei que vc é assíduo do planilhando.

O problema é que eu não entendi, e acho que o restante do pessoal também não.

Além disso, estamos voltando de um feriado, e, do pessoal mais ativo, e que participa da board de VBA, só aparecerem o alexandre e eu. O restante ainda não entrou no fórum desde a semana passada.

 
Postado : 19/02/2015 2:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Desculpe ter que posta para dizer isso, mas se o gtsalikis, não entendeu, muito menos eu (eu sou o mais lento no gatilho).

Vamos aguardar mais alguém, para que você possa ter sua questão resolvida!

Att

 
Postado : 19/02/2015 5:57 pm
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Bom, tendo em vista que eu ainda não conseguir ser claro, farei uma nova tentativa de esclarecimento.

A Userform1 possui inúmeros combobox's, os quais são utilizados para responder as perguntas da Avaliação de Desempenho do empregado. Cada combobox é carregado com 4 opções de resposta, sendo A, B, C e D. Ok?

Observa que, assim que eu selecionar uma resposta e dar enter, o comando exit desse combobox dará o valor da resposta em um textbox.

    Private Sub ComboBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If ComboBox5.Text <> "A" And ComboBox5.Text <> "D" Then

    "msgbox "Verifique essa resposta e tente novamente!"

    TextBox8.Text = ""

    End If



    If ComboBox5.Text <> "" And ComboBox5.Text = "A" Then
'se a resposta for A, o textbox77 receberá o valor da célula i12.

    TextBox77.Text = [i12]



    End If

    If ComboBox5.Text <> "" And ComboBox5.Text = "B" Then
'se a resposta for B, o textbox77 receberá o valor da célula j12.
    TextBox77.Text = [j12]


    End If

    If ComboBox5.Text <> "" And ComboBox5.Text = "C" Then
'se a resposta for C, o textbox77 receberá o valor da célula K12.
    TextBox77.Text = [k12]

    End If

    If ComboBox5.Text <> "" And ComboBox5.Text = "D" Then
'se a resposta for D, o textbox77 receberá o valor da célula l12.
    TextBox77.Text = [l12]

    End If


Isso funciona perfeitamente quando o usuário realiza um cadastro, ou seja, os cadastros são realizados com sucesso. Mas a necessidade agora é de, em um segundo momento, poder alterá-lo.

Bem, em um outra userform, todos os cadastros já realizados são carregados em uma listview, dai o usuário seleciona um cadastro e clica em alterar, dai as informações do cadastro são carregadas na userform1 (aquela que faz os cadastros). Tudo é carregado perfeitamente, mas os valores das notas não são computadas, a não ser que o usuário entre em cada combobox e dê um exit.

Eu preciso fazer com que, ao carregar a userform1, com os dados do cadastro já realizado, todos os combobox executem o código mencionado acima, pois preciso somar as notas.

 
Postado : 20/02/2015 5:03 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Olha, eu acho que entendi, mas não tenho como fazer um código sem saber o que são esses dados.

Eu faria tudo como uma função (mais ou menos assim:

Function Resposta(combo As String) As String)
    
If combo <> "A" And combo <> "D" Then
    MsgBox "Verifique essa resposta e tente novamente!"
    TextBox8.Text = ""
ElseIf combo <> "" And combo = "A" Then
'se a resposta for A, o textbox77 receberá o valor da célula i12.
    Resposta = [i12]
ElseIf combo <> "" And combo = "B" Then
'se a resposta for B, o textbox77 receberá o valor da célula j12.
    Resposta = [j12]
ElseIf combo <> "" And combo = "C" Then
'se a resposta for C, o textbox77 receberá o valor da célula K12.
    Resposta = [k12]
ElseIf combo <> "" And combo = "D" Then
'se a resposta for D, o textbox77 receberá o valor da célula l12.
    Resposta = [l12]
End If

End Function

E jogaria essa função em cada combobox.

Para o caso do teu listview, em vez de acionar os eventos de cada combobox, eu faria um loop entre eles, algo +/- assim:

For Each Control In Me.Controls
    If Left(Control.Name, 8) = "ComboBox" Then
        Resposta (Control.Text)
    End If
Next
 
Postado : 20/02/2015 5:58 am
(@lorenzon)
Posts: 355
Honorable Member
Topic starter
 

Gilmar,

Obrigado.

 
Postado : 20/02/2015 1:51 pm