Macro con excel importante



  • Macro con excel importante..
    di Kubrick data: 15/05/2010

    Supponiamo che arriva il dato in tempo reale e si posiziona nella casella s1971 io voglio che questo
    va a posizionarsi nella casella a2000 , mentre il dato che era presente precedentemente nella casella a2000 va a posizionarsi nella casella a1999 quello che c'era nella casella a1999 va posizionarsi nella casella a1998 e cosi via fino ad arrivare alla casella a1 nel quale il dato verra' perso ma non importa ( in sostanza tutti i dati vengono shiftati di 1 verso l'alto).
    supponiamo che dopo 15 minuti arriva un altro dato che si posiziona nella casella s1972 anche questo deve essere copiato in a2000 mentre quello che c'era in a2000 va in a1999 etc..
    l'ultimo dato sara' s2006 .
    qui sopra ci sono due tasti macro (stop e' corretta e funziona bene ) copia come aggiornamento va bene ma bisogna sistemare l'inserimento righe

    se non capite ho il file in excel
     
    Public SchTime
    Function Cerca_Cella_Vuota()
    'identifica la prima casella vuota dopo n nella colonna scelta
    
    
    UltimaRiga = Range("A65356").End(xlUp).Row
    
    
    Cerca_Cella_Vuota = UltimaRiga + 1
    
    
    End Function
    Private Sub Copia_Click()
    Cerca_Cella_Vuota
    SchTime = Now + TimeValue("00:00:03") 'imposti il timer ovvero ongi quanto vuoi il refresh
    
    Riga_Inziale_Copia = 1971 'definisci inizio dati da spostare
    Riga_Finale_Copia = 2006 'definisci fine dati da spostare
    
    Numero_Righe = Riga_Finale_Copia - Riga_Inziale_Copia  'serve per capire quante righe andrai a copiare
    
    Riga_Copia_Da = 2000 'riga iniziale
    'Riga_Copia_Da = Cerca_Cella_Vuota()---> usa questa se vuoi che prenda l'ultima riga vuota attenzione se usi questa si accodano e non shiftano
    
    Riga_Copia_A = Riga_Copia_Da + Numero_Righe
    'Tolgo a partire da A1 n righe equivalenti a quelle che devi copiare e poi shifto pian piano tutte le altre
    
    Range("A1:A" & Numero_Righe).Select
    Selection.ClearContents
    
    
        Range("A" & Numero_Righe + 1 & ":A" & Riga_Copia_A).Select
        Selection.Copy
        Range("A1").Select
        ActiveSheet.Paste
    
    
      Range("S" & Riga_Inziale_Copia & ":S" & Riga_Finale_Copia).Select
        Selection.Copy
        Range("A" & Riga_Copia_Da).Select
        ActiveSheet.Paste
        
    
      
        Range("S" & Riga_Inziale_Copia & ":S" & Riga_Finale_Copia).Select
        Selection.Interior.ColorIndex = Int((50 - 1 + 1) * Rnd + 1) '    would return a random number between 1 and 6.
        
        
    Application.OnTime SchTime, "Foglio3.Copia_Click"
    
    
    
    End Sub
    
    Private Sub Copia_Click_Stop_Click()
    
    Application.OnTime EarliestTime:=SchTime, Procedure:="Foglio3.Copia_Click", Schedule:=False
    
    
    End Sub
    
    
    



  • di Kubrick (utente non iscritto) data: 19/05/2010

    Nessuno mi sa rispondere