Notifications
Clear all

Nome de Variável com LOOP.

4 Posts
2 Usuários
0 Reactions
1,162 Visualizações
(@walterfeo)
Posts: 0
New Member
Topic starter
 

Prezados, bom dia.

Estou trabalhando em uma planilha para lançar receitas e despesas para o período de 16 meses. Pois bem, o fato é que existem despesas que se repetem nos 16 meses e, portanto, não quero ter que lançá-las 16 vezes.

Para tanto criei um código (me perdoem se for ruim pois sou aprendiz) que repete os lançamentos de acordo com as CHECKBOX marcadas, cujas contém os meses que desejo repetir.

As variáveis seriam: MES_1, MES_2, MES_3 até MES_16.

A variável VAR1 armazena os números 1, 2, 3 até 16.

Eu desejo que o looping faça MES_ & VAR1, que na minha concepção resultaria no nome MES_1 logo na primeira linha. Quando o looping voltar e repetir tudo, juntando MES_ & VAR1 seria = MES_2. Mas não está funcionando.

Há alguma* sugestão?

Att.,

Walter.

Código:

Do
                                                            
                                                            If MES_ & VAR1 = True Then
                                                            
                                                            ULTIMALINHA = Worksheets("MATRIZ-GERAL").Cells(Rows.Count, "B").End(xlUp).Row + 1
                                                            
                                                            MATRIZ.Range("B" & ULTIMALINHA) = TEXT_DIA.Value & "/" & MES_1.Caption
                                                            MATRIZ.Range("E" & ULTIMALINHA) = LIST_2.Value
                                                        
                                                                If BT_PLANEJADO = True Then
                                                                MATRIZ.Range("F" & ULTIMALINHA) = BT_PLANEJADO.Caption
                                                                Else
                                                                If BT_REALIZADO = True Then
                                                                MATRIZ.Range("F" & ULTIMALINHA) = BT_REALIZADO.Caption
                                                                Else
                                                                End If
                                                                End If
                                                        
                                                                If BT_DESPESA = True Then
                                                                MATRIZ.Range("G" & ULTIMALINHA) = BT_DESPESA.Caption
                                                                Else
                                                                If BT_INVESTIMENTO = True Then
                                                                MATRIZ.Range("G" & ULTIMALINHA) = BT_INVESTIMENTO.Caption
                                                                Else
                                                                End If
                                                                End If
                                                        
                                                            MATRIZ.Range("H" & ULTIMALINHA) = LIST_1.Value
                                                            MATRIZ.Range("J" & ULTIMALINHA) = LIST_3.Value
                                                            MATRIZ.Range("K" & ULTIMALINHA) = LIST_5.Value
                                                            MATRIZ.Range("L" & ULTIMALINHA) = LIST_5.List(LIST_5.ListIndex, 1)
                                                            MATRIZ.Range("M" & ULTIMALINHA) = TEXT_QTD.Value
                                                        
                                                                If BT_REAIS = True Then
                                                                MATRIZ.Range("N" & ULTIMALINHA) = BT_REAIS.Caption
                                                                Else
                                                                If BT_PRODUTOS = True Then
                                                                MATRIZ.Range("N" & ULTIMALINHA) = BT_PRODUTOS.Caption
                                                                Else
                                                                If BT_DOLAR = True Then
                                                                MATRIZ.Range("N" & ULTIMALINHA) = BT_DOLAR.Caption
                                                                Else
                                                                End If
                                                                End If
                                                                End If
                                                            
                                                            MATRIZ.Range("O" & ULTIMALINHA) = CDec(TEXT_TOTAL)
                                                            MATRIZ.Range("P" & ULTIMALINHA) = LIST_CULTURA.Value
                                                            MATRIZ.Range("Q" & ULTIMALINHA) = CDec(TEXT_RSACA)
                                                            MATRIZ.Range("R" & ULTIMALINHA) = CDec(TEXT_CAMBIO)
                                                            MATRIZ.Range("S" & ULTIMALINHA) = CDec(TEXT_VL_UN)
                                                            MATRIZ.Range("T" & ULTIMALINHA) = TEXT_QTDSC.Value
                                                            MATRIZ.Range("V" & ULTIMALINHA) = TEXT_SACASUN.Value
                                                            MATRIZ.Range("X" & ULTIMALINHA) = TEXT_CAMBIOUN.Value
                                                            MATRIZ.Range("Z" & ULTIMALINHA) = TEXT_DESCRICAO.Value
                                                            
                                                            VAR1 = VAR1 + 1
                                                            
                                                            Else
                                                            
                                                            MsgBox "Informações salvas com sucesso!"
                                                            
                                                            TEXT_DATA.Value = ""
                                                            BT_PLANEJADO = False
                                                            BT_REALIZADO = False
                                                            BT_DESPESA = False
                                                            BT_INVESTIMENTO = False
                                                            BT_SIM = False
                                                            BT_NAO = True
                                                            LIST_1.Clear
                                                            LIST_3.Clear
                                                            LIST_5.Clear
                                                            TEXT_QTD.Value = ""
                                                            BT_REAIS = False
                                                            BT_PRODUTOS = False
                                                            BT_DOLAR = False
                                                            TEXT_TOTAL.Value = ""
                                                            TEXT_RSACA.Value = ""
                                                            TEXT_CAMBIO.Value = ""
                                                            TEXT_VL_UN.Value = ""
                                                            TEXT_QTDSC.Value = ""
                                                            TEXT_SACASUN.Value = ""
                                                            TEXT_CAMBIOUN.Value = ""
                                                            TEXT_DESCRICAO.Value = ""
                                                            
                                                            End If
                                                            
                                                            Loop While VAR1 < 17
 
Postado : 27/08/2018 8:02 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

WalterFeo,

Boa tarde!

Solicitamos, por gentileza, ao postar código VBA, utilizar a ferramenta CODE existente logo no início na caixa de mensagens (quinto botão da esquerda para a direita).

Quanto a sua demanda, creio que dessa forma dará certo.

    Dim i As Long
    
    For i = 1 To 16
    
    MES_ = "MES_" & i
    If MES_ = True Then
    
    ULTIMALINHA = Worksheets("MATRIZ-GERAL").Cells(Rows.Count, "B").End(xlUp).Row + 1
    
    MATRIZ.Range("B" & ULTIMALINHA) = TEXT_DIA.Value & "/" & MES_1.Caption
    MATRIZ.Range("E" & ULTIMALINHA) = LIST_2.Value
    
    If BT_PLANEJADO = True Then
    MATRIZ.Range("F" & ULTIMALINHA) = BT_PLANEJADO.Caption
    Else
    If BT_REALIZADO = True Then
    MATRIZ.Range("F" & ULTIMALINHA) = BT_REALIZADO.Caption
    Else
    End If
    End If
    
    If BT_DESPESA = True Then
    MATRIZ.Range("G" & ULTIMALINHA) = BT_DESPESA.Caption
    Else
    If BT_INVESTIMENTO = True Then
    MATRIZ.Range("G" & ULTIMALINHA) = BT_INVESTIMENTO.Caption
    Else
    End If
    End If
    
    MATRIZ.Range("H" & ULTIMALINHA) = LIST_1.Value
    MATRIZ.Range("J" & ULTIMALINHA) = LIST_3.Value
    MATRIZ.Range("K" & ULTIMALINHA) = LIST_5.Value
    MATRIZ.Range("L" & ULTIMALINHA) = LIST_5.List(LIST_5.ListIndex, 1)
    MATRIZ.Range("M" & ULTIMALINHA) = TEXT_QTD.Value
    
    If BT_REAIS = True Then
    MATRIZ.Range("N" & ULTIMALINHA) = BT_REAIS.Caption
    Else
    If BT_PRODUTOS = True Then
    MATRIZ.Range("N" & ULTIMALINHA) = BT_PRODUTOS.Caption
    Else
    If BT_DOLAR = True Then
    MATRIZ.Range("N" & ULTIMALINHA) = BT_DOLAR.Caption
    Else
    End If
    End If
    End If
    
    MATRIZ.Range("O" & ULTIMALINHA) = CDec(TEXT_TOTAL)
    MATRIZ.Range("P" & ULTIMALINHA) = LIST_CULTURA.Value
    MATRIZ.Range("Q" & ULTIMALINHA) = CDec(TEXT_RSACA)
    MATRIZ.Range("R" & ULTIMALINHA) = CDec(TEXT_CAMBIO)
    MATRIZ.Range("S" & ULTIMALINHA) = CDec(TEXT_VL_UN)
    MATRIZ.Range("T" & ULTIMALINHA) = TEXT_QTDSC.Value
    MATRIZ.Range("V" & ULTIMALINHA) = TEXT_SACASUN.Value
    MATRIZ.Range("X" & ULTIMALINHA) = TEXT_CAMBIOUN.Value
    MATRIZ.Range("Z" & ULTIMALINHA) = TEXT_DESCRICAO.Value
    
    VAR1 = VAR1 + 1
    
    Else
    
    MsgBox "Informações salvas com sucesso!"
    
    TEXT_DATA.Value = ""
    BT_PLANEJADO = False
    BT_REALIZADO = False
    BT_DESPESA = False
    BT_INVESTIMENTO = False
    BT_SIM = False
    BT_NAO = True
    LIST_1.Clear
    LIST_3.Clear
    LIST_5.Clear
    TEXT_QTD.Value = ""
    BT_REAIS = False
    BT_PRODUTOS = False
    BT_DOLAR = False
    TEXT_TOTAL.Value = ""
    TEXT_RSACA.Value = ""
    TEXT_CAMBIO.Value = ""
    TEXT_VL_UN.Value = ""
    TEXT_QTDSC.Value = ""
    TEXT_SACASUN.Value = ""
    TEXT_CAMBIOUN.Value = ""
    TEXT_DESCRICAO.Value = ""
    
    End If
    
    Next

 
Postado : 27/08/2018 12:02 pm
(@walterfeo)
Posts: 0
New Member
Topic starter
 

Bom dia Wagner.

Infelizmente o VBA continua a não reconhecer MES_1 como true, mesmo que marcada a checkbox.

Fiz uma porção de IF para resolver, mas por repetição acredito que seria mais simples.

Att.,

Walter.

 
Postado : 28/08/2018 8:19 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Bom dia!

Anexe seu arquivo. Você pode fazer um pequeno exemplo do mesmo, com no máximo umas 3 linhas, compactar com .ZIP e anexar aqui.

 
Postado : 28/08/2018 8:47 am