none
Dúvida de Formulário vba-xls RRS feed

  • Pergunta

  • Pessoal,

    boa tarde!

    Tenho a seguinte dúvida:

    1- Considerações

    Tenho um formulário, onde ao selecionar o cargo de uma pessoa na combobox1 denominada Cargos, é exibida na text box denominada salário bruto, o valor do mesmo. Segue abaixo a programação para essa combobox.

    If ComboBox1.Value = "Analista de Sistema" Then
    salariob.Value = Range("Cargos!b2")

    ElseIf ComboBox1.Value = "Programador" Then
    salariob.Value = Range("Cargos!b3")

    ElseIf ComboBox1.Value = "Operador" Then
    salariob.Value = Range("Cargos!b4")

    Tenho outra combobox denominada dependentes (de 0 a 9), onde ao selecionar o número correspondente a qtd de dependentes, multiplicassse o salário bruto pelo percentual correspondente a quantidade que você seleciona. Vide programação:

    Private Sub ComboBox2_Change()

    If ComboBox2.Value = "0" Then
    vlrdependentes.Value = 0

    ElseIf ComboBox2.Value = "1" Then
    vlrdependentes.Value = Range("Cargos!b2") * 0.01

    ElseIf ComboBox2.Value = "2" Then
    vlrdependentes.Value = Range("Cargos!b2") * 0.02

    ElseIf ComboBox2.Value = "3" Then
    vlrdependentes.Value = Range("Cargos!b2") * 0.03

    ElseIf ComboBox2.Value = "4" Then
    vlrdependentes.Value = Range("Cargos!b2") * 0.04

    ElseIf ComboBox2.Value = "5" Then
    vlrdependentes.Value = Range("Cargos!b2") * 0.05

    e por aí vai...

    2- Questão: Se alterar o Range("Cargos!b2"), para C2, D2, E2 e assim sucessivamente para cada salário da planilha cargos, ou seja, "9 VEZES para cada salário" (pois é a qtd de dependentes que há na planilha), será aplicado o percentual correspondente conforme programação acima. Mas como fazer isso de uma forma mais simplificada, pois ficaria monstruosa a programação?????? Ao invés de 6 cargos/salários eu poderia ter 50 cargose  uma vez que são 9 dependentes, eu teria 540 linhas para cada, ou seja, ficaria impraticável.

     Podem ajudar????

    Desde já agradeço a todos. 

     

    segunda-feira, 14 de novembro de 2011 23:40

Respostas

  • Dim lCargo As Long

     

    Private Sub ComboBox1_Change()

     

        Select Case ComboBox1

            Case "Analista de Sistema"

                lCargo = 2

            Case "Programador"

                lCargo = 3

            Case "Operador"

                lCargo = 4

            'Case "Função

                'lCargo = ...

            '...

        End Select

        salariob = Range("Cargos!B" & lCargo)

    End Sub

     

    Private Sub ComboBox2_Change()

        vlrdependentes = Range("Cargos!B" & lCargo) * 0.01 * ComboBox2

    End Sub

     

    'Não esqueça de incluir em seu formulário a linha abaixo na rotina de inicialização:

    Sub UserForm_Initialize()

        lCargo = 0

    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    terça-feira, 15 de novembro de 2011 13:16
    Moderador

Todas as Respostas

  • Bom dia!!

    Como sugestão, poderia tentar um construção ...Case.

    Poderia postar seu arquivo..?

    Att.

     


    zinho
    terça-feira, 15 de novembro de 2011 11:18
  • Dim lCargo As Long

     

    Private Sub ComboBox1_Change()

     

        Select Case ComboBox1

            Case "Analista de Sistema"

                lCargo = 2

            Case "Programador"

                lCargo = 3

            Case "Operador"

                lCargo = 4

            'Case "Função

                'lCargo = ...

            '...

        End Select

        salariob = Range("Cargos!B" & lCargo)

    End Sub

     

    Private Sub ComboBox2_Change()

        vlrdependentes = Range("Cargos!B" & lCargo) * 0.01 * ComboBox2

    End Sub

     

    'Não esqueça de incluir em seu formulário a linha abaixo na rotina de inicialização:

    Sub UserForm_Initialize()

        lCargo = 0

    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    terça-feira, 15 de novembro de 2011 13:16
    Moderador