Notifications
Clear all

Problemas If ElseIf

2 Posts
2 Usuários
0 Reactions
506 Visualizações
(@karash)
Posts: 1
New Member
Topic starter
 

Prezados,
Estou com um problema com o código que estou desenvolvendo. Se alguém conseguir descobrir a falha poderia me ajudar please?

Este código está associado a um formulário onde o usuário escolhe quem aparecerá nas linhas (carreiras da organização) versus quem aparecerá nas colunas (características do funcionário). Ela vai bem até a passagem do primeiro If para o ElseIf. Simplesmente sai da execução .

Private Sub CommandButton1_Click()

Dim col01 As Range
Dim col02 As Range
Dim col031 As Range
Dim col032 As Range
Dim col033 As Range
Dim col034 As Range
Dim col04 As Range
Dim col051 As Range
Dim col052 As Range
Dim col053 As Range
Dim col054 As Range
Dim col06 As Range
Dim col07 As Range
Dim col08 As Range
Dim col09 As Range

Dim Rng As Range
Dim Intervalo As Range

Dim PrimeiraOcorrencia As String
Dim mVetor As Variant
Dim Contador As Long
Dim I As Long
Dim NovaPlanilha As Worksheet

If CheckBox6.Value = True Then
CheckBox7.Value = True
CheckBox8.Value = True
CheckBox9.Value = True
CheckBox10.Value = True
CheckBox11.Value = True
CheckBox12.Value = True
CheckBox13.Value = True
CheckBox14.Value = True

Else

If CheckBox7.Value = True Then
AFRE = "AFRE"
End If
If CheckBox7.Value = False Then AFRE = ""

If CheckBox8.Value = True Then GEFAZ = "GEFAZ"
If CheckBox8.Value = False Then GEFAZ = ""

If CheckBox9.Value = True Then TFAZ = "TFAZ"
If CheckBox9.Value = False Then TFAZ = ""

If CheckBox10.Value = True Then AFAZ = "AFAZ"
If CheckBox10.Value = False Then AFAZ = ""

If CheckBox11.Value = True Then AUSG = "AUSG"
If CheckBox11.Value = False Then AUSG = ""

If CheckBox12.Value = True Then OSO = "OSO"
If CheckBox12.Value = False Then OSO = ""

If CheckBox13.Value = True Then EPPGG = "EPPGG"
If CheckBox13.Value = False Then EPPGG = ""

If CheckBox14.Value = True Then OUTRAS = "OUTRAS"
If CheckBox14.Value = False Then OUTRAS = ""

End If

If Trim(AFRE) <> "" Then
mVetor = Array("AFRE")

Set NovaPlanilha = Worksheets.Add

Contador = NovaPlanilha.Range("A1048576").End(xlUp).Row

Sheets("REMUNERACAO BASICA").Select

With Worksheets("REMUNERACAO BASICA").Range("a1:C5000")

For I = LBound(mVetor) To UBound(mVetor)

Set Intervalo = .Find(What:=mVetor(I), _
After:=.Cells(.Cells.Count), _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)

If Not Intervalo Is Nothing Then

PrimeiraOcorrencia = Intervalo.Address

Intervalo.Copy NovaPlanilha.Range("C" & Contador)

If CheckBox15.Value = True Then
'MASP
Set col01 = Intervalo.Offset(0, -2)

col01.Copy NovaPlanilha.Range("A" & Contador)

ElseIf CheckBox40.Value = True Then
'NOME
Set col02 = Intervalo.Offset(0, -1)

col02.Copy NovaPlanilha.Range("B" & Contador)

ElseIf CheckBox42.Value = True Then
'SÍMBOLO
Set col031 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS DAD").Range("B2:C171"), 2, False)
col031.Copy NovaPlanilha.Range("C" & Contador)

Set col032 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS FGD").Range("B2:C69"), 2, False)
col032.Copy NovaPlanilha.Range("D" & Contador)

Set col033 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS GTED").Range("B2:C35"), 2, False)
col033.Copy NovaPlanilha.Range("E" & Contador)

Set col034 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS 6762").Range("B2:E780"), 4, False)
col034.Copy NovaPlanilha.Range("F" & Contador)

ElseIf CheckBox18.Value = True Then
'EXERCÍCIO
Set col04 = Application.Worksheetfuntion.VLookup(col01, Worksheets("R:Arquivo ProcessosAtos-AtualOUTROSTRABALHO CCBASE DE DADOSRELATÓRIO CARGOS").Range("A1:AY4012"), 51, False)

col04.Copy NovaPlanilha.Range("G" & Contador)

ElseIf CheckBox48.Value = True Then
'VALOR CC
Set col051 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS DAD").Range("B2:C171"), 13, False)
col051.Copy NovaPlanilha.Range("H" & Contador)

Set col052 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS FGD").Range("B2:C69"), 13, False)
col052.Copy NovaPlanilha.Range("I" & Contador)

Set col053 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS GTED").Range("B2:C35"), 12, False)
col053.Copy NovaPlanilha.Range("J" & Contador)

Set col054 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS 6762").Range("B2:E780"), 12, False)
col054.Copy NovaPlanilha.Range("K" & Contador)

ElseIf CheckBox52.Value = True Then
'REMUNERACAO S/CC
Set col06 = Intervalo.Offset(0, 66)

col06.Copy NovaPlanilha.Range("L" & Contador)

ElseIf CheckBox56.Value = True Then
'REMUNERACAO C/CC
Set col07 = Application.Worksheetfuntion.VLookup(col01, Worksheets("REMUNERACAO COM CARGO").Range("A3:B9000"), 2, False)

col07.Copy NovaPlanilha.Range("M" & Contador)

ElseIf CheckBox21.Value = True Then
'DIFERENCA S/CC C/CC
Set col08 = col07.Value - col06.Value

col08.Copy NovaPlanilha.Range("N" & Contador)

ElseIf CheckBox45.Value = True Then
'% DIFERENCA SOBRE REMUNERACAO
Set col09 = (col08.Value / col06.Value) * 100

col09.Copy NovaPlanilha.Range("O" & Contador)

End If

Do
Contador = Contador + 1

Set Intervalo = .FindNext(Intervalo)

Loop While Not Intervalo Is Nothing And Intervalo.Address <> PrimeiraOcorrencia

End If

Next I

End With

End If

End Sub

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

Sem saber exatamente o que pretende, a unica situação que chama atenção e que a variável col01, somente recebe um valor se checkbox15 for true, porem a mesma é utilizada em quase todos os demais if's

Private Sub CommandButton1_Click()
Dim col01 As Range, col02 As Range, col04 As Range, col06 As Range
Dim col07 As Range, col08 As Range, col09 As Range
Dim col031 As Range, col032 As Range, col033 As Range, col034 As Range
Dim col051 As Range, col052 As Range, col053 As Range, col054 As Range
Dim Rng As Range, Intervalo As Range

Dim PrimeiraOcorrencia As String
Dim mVetor As Variant
Dim Contador As Long
Dim I As Long
Dim NovaPlanilha As Worksheet

If CheckBox6.Value = True Then
    CheckBox7.Value = True
    CheckBox8.Value = True
    CheckBox9.Value = True
    CheckBox10.Value = True
    CheckBox11.Value = True
    CheckBox12.Value = True
    CheckBox13.Value = True
    CheckBox14.Value = True
Else
    If CheckBox7.Value = True Then
        AFRE = "AFRE"
    Else
        AFRE = ""
    End If
    
    If CheckBox8.Value = True Then
        GEFAZ = "GEFAZ"
    Else
        GEFAZ = ""
    End If

    If CheckBox9.Value = True Then
        TFAZ = "TFAZ"
    Else
        TFAZ = ""
    End If
    
    If CheckBox10.Value = True Then
        AFAZ = "AFAZ"
    Else
        AFAZ = ""
    End If

    If CheckBox11.Value = True Then
        AUSG = "AUSG"
    Else
        AUSG = ""
    End If

    If CheckBox12.Value = True Then
        OSO = "OSO"
    Else
        OSO = ""
    End If

    If CheckBox13.Value = True Then
        EPPGG = "EPPGG"
    Else
        EPPGG = ""
    End If
    
    If CheckBox14.Value = True Then
        OUTRAS = "OUTRAS"
    Else
        OUTRAS = ""
    End If
End If

If Trim(AFRE) <> "" Then
    mVetor = Array("AFRE")
    Set NovaPlanilha = Worksheets.Add
    Contador = NovaPlanilha.Range("A1048576").End(xlUp).Row
    Sheets("REMUNERACAO BASICA").Select
    
    With Worksheets("REMUNERACAO BASICA").Range("a1:C5000")
        For I = LBound(mVetor) To UBound(mVetor)
            Set Intervalo = .Find(What:=mVetor(I), After:=.Cells(.Cells.Count), LookAt:=xlPart, _
                            SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
            If Not Intervalo Is Nothing Then
                PrimeiraOcorrencia = Intervalo.Address
                Intervalo.Copy NovaPlanilha.Range("C" & Contador)
    
                If CheckBox15.Value = True Then
                    'MASP
                    Set col01 = Intervalo.Offset(0, -2)
                    col01.Copy NovaPlanilha.Range("A" & Contador)
                ElseIf CheckBox40.Value = True Then
                    'NOME
                    Set col02 = Intervalo.Offset(0, -1)
                    col02.Copy NovaPlanilha.Range("B" & Contador)
                ElseIf CheckBox42.Value = True Then
                    'SÍMBOLO
                    Set col031 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS DAD").Range("B2:C171"), 2, False)
                    col031.Copy NovaPlanilha.Range("C" & Contador)
                    Set col032 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS FGD").Range("B2:C69"), 2, False)
                    col032.Copy NovaPlanilha.Range("D" & Contador)
                    Set col033 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS GTED").Range("B2:C35"), 2, False)
                    col033.Copy NovaPlanilha.Range("E" & Contador)
                    Set col034 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS 6762").Range("B2:E780"), 4, False)
                    col034.Copy NovaPlanilha.Range("F" & Contador)
                ElseIf CheckBox18.Value = True Then
                    'EXERCÍCIO
                    Set col04 = Application.Worksheetfuntion.VLookup(col01, Worksheets("R:Arquivo ProcessosAtos-AtualOUTROSTRABALHO CCBASE DE DADOSRELATÓRIO CARGOS").Range("A1:AY4012"), 51, False)
                    col04.Copy NovaPlanilha.Range("G" & Contador)
                ElseIf CheckBox48.Value = True Then
                    'VALOR CC
                    Set col051 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS DAD").Range("B2:C171"), 13, False)
                    col051.Copy NovaPlanilha.Range("H" & Contador)
                    Set col052 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS FGD").Range("B2:C69"), 13, False)
                    col052.Copy NovaPlanilha.Range("I" & Contador)
                    Set col053 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS GTED").Range("B2:C35"), 12, False)
                    col053.Copy NovaPlanilha.Range("J" & Contador)
                    Set col054 = Application.Worksheetfuntion.VLookup(col01, Worksheets("CARGOS 6762").Range("B2:E780"), 12, False)
                    col054.Copy NovaPlanilha.Range("K" & Contador)
                ElseIf CheckBox52.Value = True Then
                    'REMUNERACAO S/CC
                    Set col06 = Intervalo.Offset(0, 66)
                    col06.Copy NovaPlanilha.Range("L" & Contador)
                ElseIf CheckBox56.Value = True Then
                    'REMUNERACAO C/CC
                    Set col07 = Application.Worksheetfuntion.VLookup(col01, Worksheets("REMUNERACAO COM CARGO").Range("A3:B9000"), 2, False)
                    col07.Copy NovaPlanilha.Range("M" & Contador)
                ElseIf CheckBox21.Value = True Then
                    'DIFERENCA S/CC C/CC
                    Set col08 = col07.Value - col06.Value
                    col08.Copy NovaPlanilha.Range("N" & Contador)
                ElseIf CheckBox45.Value = True Then
                    '% DIFERENCA SOBRE REMUNERACAO
                    Set col09 = (col08.Value / col06.Value) * 100
                    col09.Copy NovaPlanilha.Range("O" & Contador)
                End If
            Do
                Contador = Contador + 1
                Set Intervalo = .FindNext(Intervalo)
                Loop While Not Intervalo Is Nothing And Intervalo.Address <> PrimeiraOcorrencia
            End If
        Next I
    End With
End If
End Sub

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

 
Postado : 10/06/2015 10:32 am