Ir para conteúdo
Fórum Script Brasil
  • 0

Melhoria de código - Excel / VB


The Guga

Pergunta

beleza galera...

Bom, preciso da ajuda de voces para otimizar uma parte do código de uma aplicação que estou responsável.

Abaixo esta o código que existe hoje, ele oculpa umas 6 folhas e poderá caso conseguir ser resumido em algumas linhas....

Private Sub FinishButton_Click()
Dim I, J, K, Equip_A, Equip_E, Equip_NS, Equip_T, Aprov_Geral, Cont As Integer      
Acertos = 0                                                                  
Erros = 0                                                                       
Sem_Resp = 0                                                               


Workbooks("Avaliacao.xls").Activate 'ativa a planilha avaliação
NumeroQuestoes = Worksheets("Configurações").Cells(5, 11) 'retorna o valor da celula da linha 5 coluna 11 ( k5 ) e o guarda na variavel NumeroQuestoes

 ' Questao 1                                                              ' AQUI COMEÇA O CÓDIGO QUE QUERO OTIMIZAR
    If Me.OptionButton1.Value = True Then                    ' NOTE QUE O NOME DO BOTÃO OptionButton1 tem o valor 1 e será incrementado em 3 quando passar para a  questão 2
       Matriz(0, 3) = 1                                                   ' Na matriz temos dois valores 0 e 3 será incrementado de um em um
    ElseIf Me.OptionButton2.Value = True Then               'Idem do OpitinoButton1, será incrementado de 3 em 3
       Matriz(0, 3) = 0
    Else
       Matriz(0, 3) = 2
    End If
 ' Questao 2
    If Me.OptionButton4.Value = True Then
       Matriz(1, 3) = 1
    ElseIf Me.OptionButton5.Value = True Then
       Matriz(1, 3) = 0
    Else
       Matriz(1, 3) = 2
    End If
   ' Questao 3
    If Me.OptionButton7.Value = True Then
       Matriz(2, 3) = 1
    ElseIf Me.OptionButton8.Value = True Then
       Matriz(2, 3) = 0
    Else
       Matriz(2, 3) = 2
    End If
    ' Questao 4
    If Me.OptionButton10.Value = True Then
       Matriz(3, 3) = 1
    ElseIf Me.OptionButton11.Value = True Then
       Matriz(3, 3) = 0
    Else
       Matriz(3, 3) = 2
    End If
    ' Questao 5
    If Me.OptionButton13.Value = True Then
       Matriz(4, 3) = 1
    ElseIf Me.OptionButton14.Value = True Then
       Matriz(4, 3) = 0
    Else
       Matriz(4, 3) = 2
    End If
    ' Questao 6
    If Me.OptionButton16.Value = True Then
       Matriz(5, 3) = 1
    ElseIf Me.OptionButton17.Value = True Then
       Matriz(5, 3) = 0
    Else
       Matriz(5, 3) = 2
    End If
    ' Questao 7
    If Me.OptionButton19.Value = True Then
       Matriz(6, 3) = 1
    ElseIf Me.OptionButton20.Value = True Then
       Matriz(6, 3) = 0
    Else
       Matriz(6, 3) = 2
    End If
     ' Questao 8
    If Me.OptionButton22.Value = True Then
       Matriz(7, 3) = 1
    ElseIf Me.OptionButton23.Value = True Then
       Matriz(7, 3) = 0
    Else
       Matriz(7, 3) = 2
    End If
     ' Questao 9
    If Me.OptionButton25.Value = True Then
       Matriz(8, 3) = 1
    ElseIf Me.OptionButton26.Value = True Then
       Matriz(8, 3) = 0
    Else
       Matriz(8, 3) = 2
    End If
     ' Questao 10
    If Me.OptionButton28.Value = True Then
       Matriz(9, 3) = 1
    ElseIf Me.OptionButton29.Value = True Then
       Matriz(9, 3) = 0
    Else
       Matriz(9, 3) = 2
    End If
    ' Questao 11
    If Me.OptionButton31.Value = True Then
       Matriz(10, 3) = 1
    ElseIf Me.OptionButton32.Value = True Then
       Matriz(10, 3) = 0
    Else
       Matriz(10, 3) = 2
    End If
   ' Questao 12
    If Me.OptionButton34.Value = True Then
       Matriz(11, 3) = 1
    ElseIf Me.OptionButton35.Value = True Then
       Matriz(11, 3) = 0
    Else
       Matriz(11, 3) = 2
    End If
   ' Questao 13
    If Me.OptionButton37.Value = True Then
       Matriz(12, 3) = 1
    ElseIf Me.OptionButton38.Value = True Then
       Matriz(12, 3) = 0
    Else
       Matriz(12, 3) = 2
    End If
    ' Questao 14
    If Me.OptionButton40.Value = True Then
       Matriz(13, 3) = 1
    ElseIf Me.OptionButton41.Value = True Then
       Matriz(13, 3) = 0
    Else
       Matriz(13, 3) = 2
    End If
    ' Questao 15
    If Me.OptionButton43.Value = True Then
       Matriz(14, 3) = 1
    ElseIf Me.OptionButton44.Value = True Then
       Matriz(14, 3) = 0
    Else
       Matriz(14, 3) = 2
    End If
    ' Questao 16
    If Me.OptionButton46.Value = True Then
       Matriz(15, 3) = 1
    ElseIf Me.OptionButton47.Value = True Then
       Matriz(15, 3) = 0
    Else
       Matriz(15, 3) = 2
    End If
    ' Questao 17
    If Me.OptionButton49.Value = True Then
       Matriz(16, 3) = 1
    ElseIf Me.OptionButton50.Value = True Then
       Matriz(16, 3) = 0
    Else
       Matriz(16, 3) = 2
    End If
     ' Questao 18
    If Me.OptionButton52.Value = True Then
       Matriz(17, 3) = 1
    ElseIf Me.OptionButton53.Value = True Then
       Matriz(17, 3) = 0
    Else
       Matriz(17, 3) = 2
    End If
     ' Questao 19
    If Me.OptionButton55.Value = True Then
       Matriz(18, 3) = 1
    ElseIf Me.OptionButton56.Value = True Then
       Matriz(18, 3) = 0
    Else
       Matriz(18, 3) = 2
    End If
     ' Questao 20
    If Me.OptionButton58.Value = True Then
       Matriz(19, 3) = 1
    ElseIf Me.OptionButton59.Value = True Then
       Matriz(19, 3) = 0
    Else
       Matriz(19, 3) = 2
    End If
      ' Questao 21
    If Me.OptionButton61.Value = True Then
       Matriz(20, 3) = 1
    ElseIf Me.OptionButton62.Value = True Then
       Matriz(20, 3) = 0
    Else
       Matriz(20, 3) = 2
    End If
        ' Questao 22
    If Me.OptionButton64.Value = True Then
       Matriz(21, 3) = 1
    ElseIf Me.OptionButton65.Value = True Then
       Matriz(21, 3) = 0
    Else
       Matriz(21, 3) = 2
    End If
        ' Questao 23
    If Me.OptionButton67.Value = True Then
       Matriz(22, 3) = 1
    ElseIf Me.OptionButton68.Value = True Then
       Matriz(22, 3) = 0
    Else
       Matriz(22, 3) = 2
    End If
        ' Questao 24
    If Me.OptionButton70.Value = True Then
       Matriz(23, 3) = 1
    ElseIf Me.OptionButton71.Value = True Then
       Matriz(23, 3) = 0
    Else
       Matriz(23, 3) = 2
    End If
        ' Questao 25
    If Me.OptionButton73.Value = True Then
       Matriz(24, 3) = 1
    ElseIf Me.OptionButton74.Value = True Then
       Matriz(24, 3) = 0
    Else
       Matriz(24, 3) = 2
    End If
        ' Questao 26
    If Me.OptionButton76.Value = True Then
       Matriz(25, 3) = 1
    ElseIf Me.OptionButton77.Value = True Then
       Matriz(25, 3) = 0
    Else
       Matriz(25, 3) = 2
    End If
        ' Questao 27
    If Me.OptionButton79.Value = True Then
       Matriz(26, 3) = 1
    ElseIf Me.OptionButton80.Value = True Then
       Matriz(26, 3) = 0
    Else
       Matriz(26, 3) = 2
    End If
        ' Questao 28
    If Me.OptionButton82.Value = True Then
       Matriz(27, 3) = 1
    ElseIf Me.OptionButton83.Value = True Then
       Matriz(27, 3) = 0
    Else
       Matriz(27, 3) = 2
    End If
        ' Questao 29
    If Me.OptionButton85.Value = True Then
       Matriz(28, 3) = 1
    ElseIf Me.OptionButton86.Value = True Then
       Matriz(28, 3) = 0
    Else
       Matriz(28, 3) = 2
    End If
        ' Questao 30
    If Me.OptionButton88.Value = True Then
       Matriz(29, 3) = 1
    ElseIf Me.OptionButton89.Value = True Then
       Matriz(29, 3) = 0
    Else
       Matriz(29, 3) = 2
    End If
    
    For I = 0 To NumeroQuestoes
       If Matriz(I, 2) = Matriz(I, 3) Then
          Matriz(I, 4) = 1
          Acertos = Acertos + 1
       ElseIf Matriz(I, 3) = 2 Then
          Matriz(I, 4) = 2
          Sem_Resp = Sem_Resp + 1
       Else
          Matriz(I, 4) = 0
          Erros = Erros + 1
       End If
     Next I
        
    Resultados.Label4.Caption = Acertos & " Questões  -  " & Round(((Acertos / NumeroQuestoes) * 100), 2) & "%"
    Resultados.Label5.Caption = Erros & " Questões  -  " & Round(((Erros / NumeroQuestoes) * 100), 2) & "%"
    Resultados.Label6.Caption = Sem_Resp & " Questões  -  " & Round(((Sem_Resp / NumeroQuestoes) * 100), 2) & "%"
    

    Aprov_Geral = Round(Acertos / NumeroQuestoes * 100, 2)
    
    Resultados.Label7.Caption = Aprov_Geral & "%"
PENSEI E RESUMIR TODA ESTAS QUESTÕES COM A FUNÇÃO ABAIXO ONDE: INSERI VARIAVEIS INTEIRAS: Q = IRA SER INCREMENTADO DE UM EM UM E FICAR DENTRO DO PARENTESES DA MATRIZ COMO DESCREVI B = 1 TERA O VALOR INICIAL DE 1 PARA O OptionButton1 C = 2 TERA O VALOR INICIAL DE 2 PARA O OptionButton2 ABAIXO O CÓGIDO
' DEFINIDO AS VARIAVEIS NO INICIO DO CÓDIGO AUX1 E AUX2 COMO STRING E Q,B,C COMO INTEIRAS
Q = 0
B = 1
C = 2
   
  Do
   
   Aux1 = (OptionButton & "B")     'TENHO QUE FAZER COM QUE EU CONCATENE A PALAVRA OptionButton COM O NOVO VALOR
   Aux2 = OptionButton & "C"
  
     If Me.Aux1.Value = True Then    'AUX1 IRA RECEBER A STRIG AMARZENADA PARA O BOTÃO, ESTA DANDO ERRO AQUI
                                                     ERRO: ERRO DE COMPILAÇÃO ( SELECIONADO .Aux1 ) era esperado: Método ou membro de  
                                                     'dados não encontrado
         Matriz(Q, 3) = 1
      ElseIf Me.Aux2.Value = True Then  ' DANDO O MESMO ERRO AQUI 
         Matriz(Q, 3) = 0
      Else
         Matriz(Q, 3) = 2
     End If
    Q = Q + 1                                              AQUI OS VALORES SÃO INCREMENTADOS
    B = B + 3
    C = C + 3
  Loop While (Q < NumeroQuestoes)

JÁ TENTEI CONCATENAR NO LOCAL DA AUX1 E 2 A STRING OptionButton COM OS VALORES B E C MAS TENDO O MESMO PROBLEMA DE ERRO DE COMPILAÇÃO...

DESDE JÁ AGRADEÇO A AJUDA DE vocês.. VALEU GALERA...

THE GUGA

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...