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?
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.
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
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!
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.
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
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
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
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.
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
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Gilmar,
Obrigado.