Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Excel] MAKRO:Automatycznie odświeżanie z możliwością zatrz.

14 Sty 2010 13:35 4741 1

  • Poziom 20  
    Witam.
    Zrobiłem nagrałem makro które automatycznie odświeża 3 tabele (co 5 minut).
    Chciałem dodać możliwość włączenia i wyłączenia na podstawie wartości komórki.
    Wynik:
    Code:
    Sub start()   
    
    If (Range("AC11") = "TAK") Then
    Application.OnTime Now + TimeValue("00:05:00"), "button3"
     
    End If
        ActiveSheet.PivotTables("Tabela przestawna9").PivotCache.Refresh
        ActiveSheet.PivotTables("Tabela przestawna10").PivotCache.Refresh
       ActiveSheet.PivotTables("Tabela przestawna3").PivotCache.Refresh
    End Sub


    Sub button3()
        ActiveSheet.PivotTables("Tabela przestawna9").PivotCache.Refresh
        ActiveSheet.PivotTables("Tabela przestawna10").PivotCache.Refresh
       ActiveSheet.PivotTables("Tabela przestawna3").PivotCache.Refresh
           
    End Sub


    Co może być nie tak? makro czasem działa, czasem nie.
    Można to jakoś prościej zrobić?

    Code:
    Application.OnTime Now + TimeValue("00:05:00"), "button3"

    Taki kod raz uruchomiony, powoduje że nawet jeśli zamknę dany arkusz, ale nie wyłącze Excela, to i tak plik się otworzy i zadziała.
    Muszę zamknąć wszystkie pliki Excela i wtedy uruchomić inny. Jest to trochę uciązliwe.
  • Moderator Programowanie
    karolczyzycki napisał:
    Zrobiłem nagrałem makro które automatycznie odświeża 3 tabele (co 5 minut).
    Nie do końca. Makro "start" odświeża 3 tabele i planuje jednorazowe uruchomienie makra "button3". Żeby działało co zadany czas musisz wywołać procedurę "start" w "button3".

    karolczyzycki napisał:
    Co może być nie tak? makro czasem działa, czasem nie.
    Wpisz jawnie nazwę arkusza, w którym znajduje się komórka z warunkiem
    Code:
    Sub start()
    
    If Sheets("Nazwa").Range("AC11") = "TAK" Then
      Application.OnTime Now + TimeValue("00:05:00"), "button3"
    End If
    End Sub

    Sub button3()
        ActiveSheet.PivotTables("Tabela przestawna9").PivotCache.Refresh
        ActiveSheet.PivotTables("Tabela przestawna10").PivotCache.Refresh
       ActiveSheet.PivotTables("Tabela przestawna3").PivotCache.Refresh
      Call start
    End Sub

    karolczyzycki napisał:
    Taki kod raz uruchomiony, powoduje że nawet jeśli zamknę dany arkusz
    Tak właśnie działa Sheduler. Jeśli zmienisz wartość w komórce AC11 (żeby przerwać odświeżanie), to procedura "button3" zostanie uruchomiona jeszcze "ostatni raz"...