locked
Ajuda num projeto VBA (Atualização) RRS feed

  • Pergunta

  • Pessoal tenho um arquivo no qual montei meu primeiro projeto abaixo onde assim que abre o arquivo lê a data defult do Computador e atualiza um cálculo para projeção em gráfico.

    Acontece que ele faz apenas até uma certa data. como posso configurar para que ele calcule apenas a partir do momento em que o arquivo for aberto? nas sheets ja existe a forumula de cálculo, porém queria que somente calcula-se quanto for aberto o arquivo é calcule até a data anterior (que é onde estaremos vendo os resultados até o dia de ontem por exemplo).

     

    Public Sub CalculaDesvio()
    hoje = Date$
    hoje = Format(hoje, "dd/mmm")
    For n = 66 To 90
    celula = Chr(n)
    celdata = celula & "2"
    celrac = celula & "5"
    celreal = celula & "6"
    celula = celula & "7"
    dataplan = Format(CDate(Range(celdata).Value), "dd/mmm")
    If dataplan < hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n
    For n = 65 To 70
    celula = "A" & Chr(n)
    celdata = celula & "2"
    celrac = celula & "5"
    celreal = celula & "6"
    celula = celula & "7"
    dataplan = Format(CDate(Range(celdata).Value), "dd/mmm")
    If dataplan < hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n
    End Sub

     

     

    Public Sub CalculaDesvio()
    hoje = Date$
    hoje = Format(hoje, "dd/mm - ddd")
    For n = 4 To 34
    celula = "k" & n
    celdata = "a" & n
    celrac = "g" & n
    celreal = "h" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "u" & n
    celdata = "a" & n
    celrac = "q" & n
    celreal = "r" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "ae" & n
    celdata = "a" & n
    celrac = "aa" & n
    celreal = "ab" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "ap" & n
    celdata = "a" & n
    celrac = "al" & n
    celreal = "am" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "ba" & n
    celdata = "a" & n
    celrac = "aw" & n
    celreal = "ax" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "bl" & n
    celdata = "a" & n
    celrac = "bh" & n
    celreal = "bi" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "bw" & n
    celdata = "a" & n
    celrac = "bs" & n
    celreal = "bt" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "cg" & n
    celdata = "a" & n
    celrac = "cc" & n
    celreal = "cd" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "cr" & n
    celdata = "a" & n
    celrac = "cn" & n
    celreal = "co" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "cw" & n
    celdata = "a" & n
    celrac = "cu" & n
    celreal = "cv" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    For n = 4 To 34
    celula = "da" & n
    celdata = "a" & n
    celrac = "cy" & n
    celreal = "cz" & n
    dataplan = Format(CDate(Range(celdata).Value), "dd/mm - ddd")
    If dataplan > hoje Then
    Range(celula).Value = (Range(celreal).Value / Range(celrac).Value) - 1
    End If
    Next n

    End Sub

     

    quarta-feira, 26 de setembro de 2007 16:50

Todas as Respostas

  • Rovilson:

     

    Não entendi toda sua dúvida, mas para evitar que o calculo se realize, no evento WorkBook_Open de sua pasta, opte pela chamada Application.Calculation = xlCalculationManual.

     

    Se você fizer uma chamada para abrir o arquivo mencionado, insira Application.Calculation = xlCalculationAutomatic dentro desta chamada.

     

    Mas caso seu arquivo não tenha vínculo algum com sua pasta do Excel, você só terá controle através de um monitoramento do diretório.

     

    Explique como você abre este arquivo para que possa te ajudar.

     

    Private Sub Workbook_Open()

         'Calculo sensivel a qualquer alteracao na planilha

         Application.Calculation = xlCalculationAutomatic
       

        'Calculo sensivel somente a utilizacao do menu Tools -> Options -> Calculation -> Calc Now ou tecla de atalho "F9"

        Application.Calculation = xlCalculationManual
    End Sub

    Abs,

     

    terça-feira, 9 de outubro de 2007 12:41