Notifications
Clear all

Dois If´s

5 Posts
3 Usuários
0 Reactions
1,077 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Oi Galera, estou tentando fazer com que esses dois IF´s funcionem - um dentro do outro - mas o segundo ele me da um erro de Sintaxe e também quando inclui o "x" para somente armazenar o dado que eu for buscar me deu um erro de Separador de lista ou ).

Podem me ajudar por favor?

Sub teste()
Incremental = 10
Incremental2 = 7
        Dim x As Integer
        Set WbConsolided = Workbooks("Consolided Price List - to 2017.xlsm")
        Set WdListModel = Workbooks("List Public - Model 2.xlsx")
        
    Do While ActiveCell <> ""
        If WdListModel.Worksheets("Model").Range("D" & Incremental).Value = WbConsolided.Worksheets("Consolided Price List").Range("B" & Incremental2).Value Then
        'And WbConsolided.Worksheets("Consolided Price List").Range("AH" & Incremental2).Value = WbConsolided.Worksheets("Sheet2").Range("B2).Value
        
            if WbConsolided.Worksheets("Consolided Price List").Range("AH" & Incremental2).Value = WbConsolided.Worksheets("Sheet2").Range("B2).Value then
                
            set x = WbConsolided.Worksheets("Sheet2").Range("G2).Value 'aliquota de impostos
            
            WdListModel.Activate
            ULT_LINHA = Range("E" & Rows.Count).End(xlUp).Row
            Range("H10:H" & ULT_LINHA).FormulaR1C1 = "=RC[1]/RC[-1]"
            tier = Range("Tier")
            Range("K10:K" & ULT_LINHA).FormulaR1C1 = "=(RC[-2]*tier)/(1-x)"
            
            End If
            
            
        End If
        Incremental = Incremental + 1
        Incremental2 = Incremental2 + 1
    Loop
End Sub
 
Postado : 07/12/2016 5:57 pm
(@mprudencio)
Posts: 0
New Member
 

Faltou fechar as aspas nesta linha


WbConsolided.Worksheets("Sheet2").Range("B2").Value

Nos dois ifs

 
Postado : 07/12/2016 6:47 pm
(@edcronos2)
Posts: 0
New Member
 

oq reparei é que vc omitiu "
If WbConsolided.Worksheets("Consolided Price List").Range("AH" & Incremental2).Value = WbConsolided.Worksheets("Sheet2").Range("B2").Value Then

Set x = WbConsolided.Worksheets("Sheet2").Range("G2").Value 'aliquota de impostos

para facilitar a leitura e melhorar a execução o certo é adicionar valores fixos em variaveis antes do loop

val_consoli = WbConsolided.Worksheets("Sheet2").Range("B2").Value

 Do While ActiveCell <> ""
...
   If WbConsolided.Worksheets("Consolided Price List").Range("AH" & Incremental2).Value = val_consoli Then

tbm pode facilitar setando mais longe as variaveis de worksheet

    Sub teste()
    Incremental = 10
    Incremental2 = 7
            Dim x As Integer
            Set WbConsolided = Workbooks("Consolided Price List - to 2017.xlsm")
            Set WdListModel = Workbooks("List Public - Model 2.xlsx")
            
            Set wb_cons_prince = WbConsolided.Worksheets("Consolided Price List")
            Set wb_model = WdListModel.Worksheets("Model")
            
val_consoli = WbConsolided.Worksheets("Sheet2").Range("B2").Value
 x = WbConsolided.Worksheets("Sheet2").Range("G2").Value
 
 
        Do While ActiveCell <> ""
        
            If wb_model.Range("D" & Incremental).Value = wb_cons_prince.Range("B" & Incremental2).Value Then
          
                If wb_cons_prince.Range("AH" & Incremental2).Value = val_consoli Then
                   
             
               
                WdListModel.Activate
                ULT_LINHA = Range("E" & Rows.Count).End(xlUp).Row
                Range("H10:H" & ULT_LINHA).FormulaR1C1 = "=RC[1]/RC[-1]"
                tier = Range("Tier")
                Range("K10:K" & ULT_LINHA).FormulaR1C1 = "=(RC[-2]*tier)/(1-x)"
               
                End If
               
               
            End If
            Incremental = Incremental + 1
            Incremental2 = Incremental2 + 1
        Loop
    End Sub

sei que não está terminado, então nem tentei entender a logica
mas considere em algum loop onde a mesma range vai ser lida mais de uma vez utilizar variavel para compor o valor

tipo
for l=1 to 100
n=cells(l,2).value2
if n>10 then
for c=1 to 100
n2=cells(l,c).value2
if n<>n2 then
n=n+n2
next
cells(l,2).value2=n
next

isso evita algumas intervenções na planilha

 
Postado : 07/12/2016 6:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Nossa ... passei boa parte da tarde tentando fazer isso rodar e vocês em alguns minutos já viram que faltavam as aspas ...

Obrigado...

edcronos2 não entendi a parte abaixo... e realmente agora que vi que o codigo esta passando normal ele não esta fazendo o que eu imaginei... vou testar de novo amanhã com todos os arquivos abertos, mas queria entender melhor o loop que você citou.

sei que não está terminado, então nem tentei entender a logica
mas considere em algum loop onde a mesma range vai ser lida mais de uma vez utilizar variavel para compor o valor

tipo
for l=1 to 100
n=cells(l,2).value2
if n>10 then
for c=1 to 100
n2=cells(l,c).value2
if n<>n2 then
n=n+n2
next
cells(l,2).value2=n
next

isso evita algumas intervenções na planilha

 
Postado : 07/12/2016 9:24 pm
(@edcronos2)
Posts: 0
New Member
 

foi apenas um exemplo meio tosco e nada explicativo
ele normal seria assim

Sub ff()
     For l = 1 To 100
          n = Cells(l, 2).Value2
          If n > 10 Then
               For c = 1 To 100
                    n2 = Cells(l, c).Value2
                    If n <> n2 Then n = n + n2
               Next
              Cells(l, 2).Value2 = n
          End If
     Next
End Sub

a celula de n2 não teve muita economia de intervenção
mas a de n teve bastante e isso agiliza a execução

 
Postado : 07/12/2016 10:06 pm