AGORA, VOU MANAR FUNÇÕES AUXILIARES QUE HÁ, NÃO LEMBRO QUAIS ERAM UTILIZADAS NA MACRO QUE ENVIEI, MAS, DE TODA FORMA, ADAPTE, SEM MUDAR NENHUMA FUNCIONALIDADE ATUAL RELEVANTE, PARA ESSA MCRO


Sub AtualizarStatusIndividual(ws As Worksheet, meses() As String, arrMeses() As Integer, mesAtual As Integer, anoAtual As Integer)
    ' Variáveis para timer de alta precisão
    Dim freq As Currency
    Dim startTime As Currency, endTime As Currency
    Dim tempoTotal As Double
    Dim tempoPorCliente As Double
    Dim clientesProcessados As Long
    
    ' Iniciar timer de alta precisão
    QueryPerformanceFrequency freq
    QueryPerformanceCounter startTime
    
    On Error GoTo ErroHandler
    
    Dim linha As Long, coluna As Long
    Dim mesCelula As Integer, status As String
    Dim dataLimite As Date
    Dim clienteStartTime As Currency
    Dim cel As Range ' Variável para manipulação de células
    
    ' Verificação de parâmetros essenciais
    If ws Is Nothing Then
        MsgBox "Planilha inválida fornecida como parâmetro!", vbCritical
        Exit Sub
    End If
    
    If UBound(arrMeses) < 11 Then ' Verifica se array de meses está completo
        MsgBox "Array de meses incompleto!", vbExclamation
        Exit Sub
    End If
    
    ' Configurações para performance
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .StatusBar = "Atualizando status individual..."
    End With
    
    dataLimite = DateSerial(anoAtual, mesAtual + 1, 5) ' Dia 5 do próximo mês
    clientesProcessados = 0
    
    ' Loop principal otimizado
    For linha = 15 To ws.Cells(ws.Rows.Count, "A").End(xlUp).row
        QueryPerformanceCounter clienteStartTime ' Inicia timer para este cliente
        
        If Not IsEmpty(ws.Cells(linha, 1).Value) Then
            clientesProcessados = clientesProcessados + 1
            
            For coluna = 2 To 13 ' Colunas B a M (meses)
                Set cel = ws.Cells(linha, coluna) ' Objeto celular para melhor performance
                status = UCase(Trim(cel.Value))
                
                ' Mantém status PAGO inalterado
                If status Like "PAGO*" Then GoTo ProximaColuna
                
                ' Obtém mês da coluna atual com tratamento de erro
                On Error Resume Next
                mesCelula = arrMeses(coluna - 1)
                If Err.Number <> 0 Then
                    Debug.Print "Erro ao obter mês para coluna " & coluna & " na linha " & linha
                    On Error GoTo 0
                    GoTo ProximaColuna
                End If
                On Error GoTo 0
                
                ' Lógica de status aprimorada
                If mesCelula < mesAtual Or (mesCelula = mesAtual And Date > dataLimite) Then
                    ' Status "EM DÍVIDA"
                    If status <> "EM DÍVIDA" Then
                        With cel
                            .Value = "EM DÍVIDA"
                            .Interior.Color = RGB(255, 200, 200) ' Vermelho claro
                            .Font.Color = RGB(192, 0, 0)         ' Vermelho escuro
                            .Font.Bold = True
                        End With
                    End If
                Else
                    ' Status "NO PRAZO" (só atualiza se necessário)
                    If IsEmpty(cel.Value) Or (status <> "NO PRAZO" And status <> "EM DÍVIDA") Then
                        With cel
                            .Value = "NO PRAZO"
                            .Interior.Color = RGB(255, 255, 255) ' Branco
                            .Font.Color = RGB(0, 0, 0)           ' Preto
                            .Font.Bold = False
                        End With
                    End If
                End If
ProximaColuna:
            Next coluna
            
            ' Atualizar status a cada 10 clientes
            If clientesProcessados Mod 10 = 0 Then
                Application.StatusBar = "Processando cliente " & linha & _
                                       " (" & clientesProcessados & " concluídos)"
                DoEvents
            End If
        End If
        
        ' Calcular tempo para este cliente
        QueryPerformanceCounter endTime
        tempoPorCliente = (endTime - clienteStartTime) / freq * 1000 ' ms
    Next linha
    
    ' Finalizar timer total
    QueryPerformanceCounter endTime
    tempoTotal = (endTime - startTime) / freq * 1000 ' ms
    
    ' Mensagem final detalhada (apenas se processou clientes)
    If clientesProcessados > 0 Then
        Dim msg As String
        msg = "RELATÓRIO DE EXECUÇÃO:" & vbCrLf & vbCrLf & _
              "Status atualizados com sucesso!" & vbCrLf & vbCrLf & _
              "Tempo total: " & Format(tempoTotal / 1000, "0.000") & " segundos" & vbCrLf & _
              "Clientes processados: " & clientesProcessados & vbCrLf & _
              "Tempo médio por cliente: " & Format(tempoPorCliente, "0.00") & " ms" & vbCrLf & vbCrLf & _
              "Data da atualização: " & Format(Now, "dd/mm/yyyy HH:mm:ss")
        
    End If
    
    ' Registrar no Immediate Window (Ctrl+G)
    Debug.Print "AtualizarStatusIndividual - " & Format(Now, "dd/mm/yyyy HH:mm:ss")
    Debug.Print "Tempo total: " & Format(tempoTotal / 1000, "0.000") & " s"
    Debug.Print "Clientes processados: " & clientesProcessados
    Debug.Print "Tempo médio por cliente: " & Format(tempoPorCliente, "0.00") & " ms"
    
    ' Restaurar configurações
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .StatusBar = False
    End With
    
    Exit Sub
    
ErroHandler:
    ' Finalizar timer em caso de erro
    QueryPerformanceCounter endTime
    tempoTotal = (endTime - startTime) / freq * 1000 ' ms
    
    ' Mensagem de erro detalhada
    Dim errMsg As String
    errMsg = "ERRO NA EXECUÇÃO:" & vbCrLf & vbCrLf & _
             "Linha: " & linha & " | Coluna: " & coluna & vbCrLf & _
             "Cliente: " & ws.Cells(linha, 1).Value & vbCrLf & _
             "Tempo decorrido: " & Format(tempoTotal / 1000, "0.000") & " segundos" & vbCrLf & _
             "Clientes processados: " & clientesProcessados & vbCrLf & vbCrLf & _
             "Erro: " & Err.Description & vbCrLf & _
             "Código: " & Err.Number
    
    Debug.Print errMsg
    MsgBox errMsg, vbCritical, "Erro na Atualização"
    
    ' Restaurar configurações mesmo em caso de erro
    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .StatusBar = False
    End With
End Sub

' ========== FUNÇÃO PARA PROCESSAR PARCELA COM DADOS UNIFORMES ==========
Sub ProcessarParcelaUniforme(wsCusto As Worksheet, wsParcelas As Worksheet, linhaCusto As Long, linhaParcelas As Long, numParcela As Integer, ByRef parcelasProcessadas As Long, dataPagamento As Date, valorPago As Currency)
    Dim colParcela As Long
    
    ' Encontrar coluna da parcela (grupos a cada 5 colunas começando na coluna I)
    colParcela = 9 + (numParcela - 1) * 5
    
    ' Verificar se a coluna existe e tem valor
    If colParcela > wsParcelas.UsedRange.Columns.Count Or _
       wsParcelas.Cells(linhaParcelas, colParcela).Value = 0 Or _
       wsParcelas.Cells(linhaParcelas, colParcela).Value = "" Then
        Exit Sub
    End If
    
    ' Registrar pagamento
    With wsParcelas
        .Cells(linhaParcelas, colParcela + 2).Value = "SIM"         ' FOI PAGO?
        .Cells(linhaParcelas, colParcela + 1).Value = dataPagamento ' QUANDO PAGAR
        .Cells(linhaParcelas, colParcela + 3).Value = "NADA, SITUAÇÃO OK" ' O QUE FAZER?
    End With
    
    parcelasProcessadas = parcelasProcessadas + 1
End Sub

' ========== FUNÇÃO AUXILIAR PARA OBTER DATA DE PAGAMENTO ==========
Function ObterDataPagamento(tipoPagamento As String) As Date
    Dim resposta As String
    
    Do
        resposta = InputBox("Data do pagamento para " & tipoPagamento & ":" & vbCrLf & _
                           "(Formato DD/MM/AAAA ou HOJE para data atual)", "Data do Pagamento", "HOJE")
        
        If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
            ObterDataPagamento = CDate("00:00:00")
            Exit Function
        End If
        
        If UCase(Trim(resposta)) = "HOJE" Or resposta = "" Then
            ObterDataPagamento = Date
            Exit Function
        Else
            On Error Resume Next
            ObterDataPagamento = CDate(resposta)
            If Err.Number = 0 Then Exit Function
            On Error GoTo 0
            
            MsgBox "Data inválida! Use o formato DD/MM/AAAA.", vbExclamation
        End If
    Loop
End Function

' ========== FUNÇÃO PARA PROCESSAR UM CLIENTE ==========
Sub ProcessarCliente(wsCusto As Worksheet, wsParcelas As Worksheet, linhaCusto As Long, ByRef clientesProcessados As Long, ByRef clientesPulados As Long, ByRef parcelasProcessadas As Long, processarTodos As Boolean)
    Dim nomeCliente As String, nomeParcial As String
    Dim j As Long, k As Long
    Dim tipoPagamento As String, resposta As String
    Dim numParcela As Integer, totalParcelas As Integer
    Dim valorEsperado As Currency, valorPago As Currency
    Dim dataPagamento As Date
    Dim clienteEncontrado As Boolean
    Dim parcelasIguais As String, tipoDiferenca As String
    Dim dataPadrao As Date, valorPadrao As Currency
    
    nomeCliente = wsCusto.Cells(linhaCusto, 1).Value
    If nomeCliente = "" Then Exit Sub
    
    ' Verificar se encontrou o cliente na planilha de parcelas
    clienteEncontrado = False
    For j = 7 To wsParcelas.Cells(wsParcelas.Rows.Count, "A").End(xlUp).row
        If wsParcelas.Cells(j, 1).Value = nomeCliente Then
            clienteEncontrado = True
            Exit For
        End If
    Next j
    
    If Not clienteEncontrado Then
        If processarTodos Then
            clientesPulados = clientesPulados + 1
            Exit Sub
        Else
            MsgBox "Cliente não encontrado na planilha de parcelas!", vbExclamation
            clientesPulados = clientesPulados + 1
            Exit Sub
        End If
    End If
    
    ' ========== SELEÇÃO DO TIPO DE PAGAMENTO ==========
    tipoPagamento = UCase(InputBox("Registro de pagamento para: " & nomeCliente & vbCrLf & vbCrLf & _
                                 "Selecione o tipo:" & vbCrLf & _
                                 "1 - Só ENTRADA" & vbCrLf & _
                                 "2 - Só PARCELAS" & vbCrLf & _
                                 "3 - ENTRADA + PARCELAS" & vbCrLf & _
                                 "Digite 1, 2 ou 3:", "Tipo de Pagamento", "1"))
    
    If tipoPagamento = "" Then
        clientesPulados = clientesPulados + 1
        Exit Sub
    End If
    
    ' ========== PROCESSAR ENTRADA ==========
    If tipoPagamento = "1" Or tipoPagamento = "3" Then
        ' Obter valor esperado da entrada (coluna C na planilha de custo)
        valorEsperado = wsCusto.Cells(linhaCusto, 2).Value
        
        ' Mostrar valor esperado e solicitar valor pago
        valorPago = 0
        Do
            resposta = InputBox("REGISTRO DE ENTRADA" & vbCrLf & vbCrLf & _
                              "Cliente: " & nomeCliente & vbCrLf & _
                              "Valor esperado: R$ " & Format(valorEsperado, "#,##0.00") & vbCrLf & vbCrLf & _
                              "Digite o valor pago:" & vbCrLf & _
                              "(0 para não registrar)", "Valor da Entrada", valorEsperado)
            
            If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
                clientesPulados = clientesPulados + 1
                Exit Sub
            ElseIf resposta = "" Then
                valorPago = 0
                Exit Do
            Else
                On Error Resume Next
                valorPago = Replace(resposta, ".", "")
                valorPago = Replace(valorPago, ",", ".")
                valorPago = CCur(valorPago)
                On Error GoTo 0
                
                If valorPago >= 0 Then Exit Do
                MsgBox "Valor inválido! Digite um valor numérico positivo.", vbExclamation
            End If
        Loop
        
        If valorPago > 0 Then
            ' Solicitar data do pagamento
            dataPagamento = ObterDataPagamento("ENTRADA")
            If dataPagamento = CDate("00:00:00") Then
                clientesPulados = clientesPulados + 1
                Exit Sub
            End If
            
            ' Registrar pagamento na planilha de parcelas
            With wsParcelas
                .Cells(j, 5).Value = "SIM"         ' FOI PAGO?
                .Cells(j, 4).Value = dataPagamento  ' QUANDO PAGAR
                .Cells(j, 6).Value = "NADA, SITUAÇÃO OK" ' O QUE FAZER?
            End With
            
            parcelasProcessadas = parcelasProcessadas + 1
        End If
    End If
    
    ' ========== PROCESSAR PARCELAS ==========
    If tipoPagamento = "2" Or tipoPagamento = "3" Then
        ' Determinar total de parcelas (contar apenas colunas com valores numéricos)
        totalParcelas = 0
        For k = 9 To wsParcelas.UsedRange.Columns.Count Step 5
            ' Verifica se tem "PARCELA" no cabeçalho E se tem valor na célula
            If wsParcelas.Cells(5, k).Value Like "PARCELA*" And _
               IsNumeric(wsParcelas.Cells(j, k).Value) And _
               wsParcelas.Cells(j, k).Value <> 0 Then
                totalParcelas = totalParcelas + 1
            End If
        Next k
        
        If totalParcelas = 0 Then
            MsgBox "Nenhuma parcela encontrada para este cliente!", vbInformation
            clientesPulados = clientesPulados + 1
            Exit Sub
        End If
        
        ' Selecionar qual parcela processar
        resposta = InputBox("REGISTRO DE PARCELAS" & vbCrLf & vbCrLf & _
                          "Cliente: " & nomeCliente & vbCrLf & _
                          "Total de parcelas: " & totalParcelas & vbCrLf & vbCrLf & _
                          "Digite o número da parcela (1-" & totalParcelas & "):" & vbCrLf & _
                          "ou TODAS para registrar todas as parcelas", "Seleção de Parcelas", "1")
        
        If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
            clientesPulados = clientesPulados + 1
            Exit Sub
        ElseIf resposta = "" Then
            clientesPulados = clientesPulados + 1
            Exit Sub
        End If
        
        ' Processar parcelas selecionadas
        If UCase(resposta) = "TODAS" Then
            ' Nova funcionalidade: perguntar se datas/valores são iguais
            If totalParcelas > 1 Then
                parcelasIguais = UCase(InputBox("As parcelas pagas têm:" & vbCrLf & _
                                              "1 - Mesma data e mesmo valor" & vbCrLf & _
                                              "2 - Alguma diferença" & vbCrLf & _
                                              "Digite 1 ou 2:", "Uniformidade das Parcelas", "1"))
                
                If parcelasIguais = "1" Then
                    ' Obter dados padrão uma única vez
                    dataPadrao = ObterDataPagamento("PARCELA 1")
                    If dataPadrao = CDate("00:00:00") Then
                        clientesPulados = clientesPulados + 1
                        Exit Sub
                    End If
                    
                    valorPadrao = 0
                    Do
                        resposta = InputBox("Valor pago para todas as parcelas (R$):", "Valor Padrão")
                        If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
                            clientesPulados = clientesPulados + 1
                            Exit Sub
                        ElseIf resposta = "" Then
                            valorPadrao = 0
                            Exit Do
                        Else
                            On Error Resume Next
                            valorPadrao = Replace(resposta, ".", "")
                            valorPadrao = Replace(valorPadrao, ",", ".")
                            valorPadrao = CCur(valorPadrao)
                            On Error GoTo 0
                            
                            If valorPadrao >= 0 Then Exit Do
                            MsgBox "Valor inválido! Digite um valor numérico positivo.", vbExclamation
                        End If
                    Loop
                    
                    If valorPadrao > 0 Then
                        For numParcela = 1 To totalParcelas
                            ProcessarParcelaUniforme wsCusto, wsParcelas, linhaCusto, j, numParcela, parcelasProcessadas, dataPadrao, valorPadrao
                        Next numParcela
                    End If
                Else
                    ' Perguntar qual a diferença
                    tipoDiferenca = UCase(InputBox("O que é diferente nas parcelas?" & vbCrLf & _
                                                  "1 - Só as datas" & vbCrLf & _
                                                  "2 - Só os valores" & vbCrLf & _
                                                  "3 - Ambos (datas e valores)" & vbCrLf & _
                                                  "Digite 1, 2 ou 3:", "Tipo de Diferença", "3"))
                    
                    If tipoDiferenca = "1" Then ' Só datas diferentes
                        ' Obter valor padrão uma única vez
                        valorPadrao = 0
                        Do
                            resposta = InputBox("Valor pago para todas as parcelas (R$):", "Valor Padrão")
                            If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
                                clientesPulados = clientesPulados + 1
                                Exit Sub
                            ElseIf resposta = "" Then
                                valorPadrao = 0
                                Exit Do
                            Else
                                On Error Resume Next
                                valorPadrao = Replace(resposta, ".", "")
                                valorPadrao = Replace(valorPadrao, ",", ".")
                                valorPadrao = CCur(valorPadrao)
                                On Error GoTo 0
                                
                                If valorPadrao >= 0 Then Exit Do
                                MsgBox "Valor inválido! Digite um valor numérico positivo.", vbExclamation
                            End If
                        Loop
                        
                        If valorPadrao > 0 Then
                            For numParcela = 1 To totalParcelas
                                dataPagamento = ObterDataPagamento("PARCELA " & numParcela)
                                If dataPagamento = CDate("00:00:00") Then Exit For
                                
                                ProcessarParcelaUniforme wsCusto, wsParcelas, linhaCusto, j, numParcela, parcelasProcessadas, dataPagamento, valorPadrao
                            Next numParcela
                        End If
                    ElseIf tipoDiferenca = "2" Then ' Só valores diferentes
                        ' Obter data padrão uma única vez
                        dataPadrao = ObterDataPagamento("TODAS AS PARCELAS")
                        If dataPadrao = CDate("00:00:00") Then
                            clientesPulados = clientesPulados + 1
                            Exit Sub
                        End If
                        
                        For numParcela = 1 To totalParcelas
                            ' Obter valor específico para cada parcela
                            valorEsperado = wsParcelas.Cells(j, 9 + (numParcela - 1) * 5).Value
                            valorPago = 0
                            Do
                                resposta = InputBox("REGISTRO DE PARCELA " & numParcela & vbCrLf & vbCrLf & _
                                                  "Cliente: " & nomeCliente & vbCrLf & _
                                                  "Valor esperado: R$ " & Format(valorEsperado, "#,##0.00") & vbCrLf & vbCrLf & _
                                                  "Digite o valor pago:" & vbCrLf & _
                                                  "(0 para não registrar)", "Valor da Parcela", valorEsperado)
                                
                                If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
                                    Exit For
                                ElseIf resposta = "" Then
                                    valorPago = 0
                                    Exit Do
                                Else
                                    On Error Resume Next
                                    valorPago = Replace(resposta, ".", "")
                                    valorPago = Replace(valorPago, ",", ".")
                                    valorPago = CCur(valorPago)
                                    On Error GoTo 0
                                    
                                    If valorPago >= 0 Then Exit Do
                                    MsgBox "Valor inválido! Digite um valor numérico positivo.", vbExclamation
                                End If
                            Loop
                            
                            If valorPago > 0 Then
                                ProcessarParcelaUniforme wsCusto, wsParcelas, linhaCusto, j, numParcela, parcelasProcessadas, dataPadrao, valorPago
                            End If
                        Next numParcela
                    Else ' Ambos diferentes (datas e valores)
                        For numParcela = 1 To totalParcelas
                            ProcessarParcelaIndividual wsCusto, wsParcelas, linhaCusto, j, numParcela, parcelasProcessadas
                        Next numParcela
                    End If
                End If
            Else ' Apenas 1 parcela
                ProcessarParcelaIndividual wsCusto, wsParcelas, linhaCusto, j, 1, parcelasProcessadas
            End If
        Else
            On Error Resume Next
            numParcela = CInt(resposta)
            On Error GoTo 0
            
            If numParcela >= 1 And numParcela <= totalParcelas Then
                ProcessarParcelaIndividual wsCusto, wsParcelas, linhaCusto, j, numParcela, parcelasProcessadas
            Else
                MsgBox "Número de parcela inválido!", vbExclamation
            End If
        End If
    End If
    
    clientesProcessados = clientesProcessados + 1
End Sub

' ========== FUNÇÃO PARA PROCESSAR PARCELA INDIVIDUAL ==========
Sub ProcessarParcelaIndividual(wsCusto As Worksheet, wsParcelas As Worksheet, linhaCusto As Long, linhaParcelas As Long, numParcela As Integer, ByRef parcelasProcessadas As Long)
    Dim colParcela As Long
    Dim vlrEsperado As Currency, vlrPago As Currency
    Dim dtPagamento As Date
    Dim resposta As String
    
    ' Encontrar coluna da parcela (grupos a cada 5 colunas começando na coluna I)
    colParcela = 9 + (numParcela - 1) * 5
    
    ' Verificar se a coluna existe e se tem valor
    If colParcela > wsParcelas.UsedRange.Columns.Count Then
        MsgBox "Grupo de colunas da parcela " & numParcela & " não encontrado!", vbExclamation
        Exit Sub
    End If
    
    ' Verificar se existe valor na parcela
    If IsEmpty(wsParcelas.Cells(linhaParcelas, colParcela).Value) Or _
       wsParcelas.Cells(linhaParcelas, colParcela).Value = 0 Then
        MsgBox "Parcela " & numParcela & " não possui valor definido!", vbInformation
        Exit Sub
    End If
    
    ' Obter valor esperado da parcela
    vlrEsperado = wsParcelas.Cells(linhaParcelas, colParcela).Value
    
    ' Solicitar valor pago
    vlrPago = 0
    Do
        resposta = InputBox("REGISTRO DE PARCELA " & numParcela & vbCrLf & vbCrLf & _
                          "Cliente: " & wsCusto.Cells(linhaCusto, 1).Value & vbCrLf & _
                          "Valor esperado: R$ " & Format(vlrEsperado, "#,##0.00") & vbCrLf & vbCrLf & _
                          "Digite o valor pago:" & vbCrLf & _
                          "(0 para não registrar)", "Valor da Parcela", vlrEsperado)
        
        If StrPtr(resposta) = 0 Then ' Usuário clicou em Cancelar
            Exit Sub
        ElseIf resposta = "" Then
            vlrPago = 0
            Exit Do
        Else
            ' Tratar entrada monetária
            On Error Resume Next
            vlrPago = Replace(Replace(resposta, ".", ""), ",", ".")
            vlrPago = CCur(vlrPago)
            On Error GoTo 0
            
            If vlrPago >= 0 Then Exit Do
            MsgBox "Valor inválido! Digite um valor numérico positivo.", vbExclamation
        End If
    Loop
    
    If vlrPago > 0 Then
        ' Solicitar data do pagamento
        dtPagamento = ObterDataPagamento("PARCELA " & numParcela)
        If dtPagamento = CDate("00:00:00") Then Exit Sub
        
        ' Registrar pagamento na planilha
        With wsParcelas
            .Cells(linhaParcelas, colParcela + 2).Value = "SIM"         ' FOI PAGO?
            .Cells(linhaParcelas, colParcela + 1).Value = dtPagamento   ' QUANDO PAGAR
            .Cells(linhaParcelas, colParcela + 3).Value = "NADA, SITUAÇÃO OK" ' O QUE FAZER?
        End With
        
        parcelasProcessadas = parcelasProcessadas + 1
    End If
End Sub

A PARTIR DESSAS MACRO PRINCIPAL, ADAPTE ESSAS MACROS AUXILARES, PARA QUE, CASO PRECISE, SEJAM UTILIZADAS PELA MACRO PRINCIPAL