Autofill su selezione di cell



  • Autofill su selezione di cell
    di Zasso data: 18/04/2013 17:09:05

    Ciao

    Di questa macro funziona solo la prima parte.
    La seconda parte utilizza la stessa "tecnica" della prima ma dovrebbe reimpirmi solo le celle che fanno parte della selezione del filtro che applico.

    Non riesco a capire cosa lo blocchi.
    L'errore dovrebbe essere nella stringa "[Q58].AutoFill Destination:=Range("Q58:Q" & n).SpecialCells(xlCellTypeVisible), Type:=xlFillDefaults" dato che il debug mi da errore 1004 in quella posizione.

    Ciao e grazie
     
    Sub Aggiorna_Dati()
    
    'PRIMA PARTE
    'Update vecchi dati
         Sheets("LineItems_Plan 2013").Select
         If ActiveSheet.FilterMode Then
             ActiveSheet.ShowAllData
         End If
    
         p = Range("O10000").End(xlUp).Row
         [Q2].FormulaR1C1 = "=Label_budget(ROW())"
         Range("Q2:Q" & p).Select
         [Q2].AutoFill Destination:=Range("Q2:Q" & p), Type:=xlFillDefaults
    
    
    'SECONDA PARTE
        Sheets("LineItems_2013").Select
        'Applica filtro su conti di P/L
        Cells.AutoFilter field:=3, Criteria1:=">=600000000", Operator:=xlAnd, Criteria2:="<700000000"
    'Inserisci formula Label_Budget nella colonna Q e formatta
        n = Range("O10000").End(xlUp).Row
        [Q58].FormulaR1C1 = "=Label_budget(ROW())"
        [Q58].AutoFill Destination:=Range("Q58:Q" & n).SpecialCells(xlCellTypeVisible), Type:=xlFillDefaults
        [Q:Q].EntireColumn.AutoFit
          
        
    End Sub



  • di Vecchio Frac data: 19/04/2013 18:31:25

    "1004: Errore nel metodo Autofill"

    In pratica vuoi ricopiare la formula =Label_budget(Row()), che sta in Q58, da Q58 fino alla fine nelle sole celle visibili.

    Mi verifichi cosa succede se la prima parte della formula, funzionante, la scrivi così, cioè senza l'Autofill?
     
    'PRIMA PARTE
    'Update vecchi dati
         Sheets("LineItems_Plan 2013").Select
         If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
    
         p = Range("O10000").End(xlUp).Row
         Range("Q2:Q" & p).FormulaR1C1 = "=Label_budget(ROW())"
    






  • di Zasso data: 20/04/2013 10:24:32

    Ciao,

    come sempre dovrò attendere lunedi per poter testare.

    Per adesso ho risolto il vecchio problema della data riuscendo ad effettuare un altro tipo di estrazione che automaticamente mi pone la data in dd/mm/aaaa (praticamente invece di estrarre direttamente in .xls, lo estraggo in HTML e da li in .xlsx).

    Anche se in questo caso avevo il problema che nella colonna C i dati dovevano essere convertiti in NUMERI e ho risolto con il codice allegato.

    Quindi mi rimane come "problema" solo l'inserimento della formula nel range. In realtà non è un gran problema nel senso che mi sono creato 2 userform che avvisano l'utente di ciò che farà il file (e del tempo che potrebbe impiegarci) e alla fine viene mostrata un'ulteriore userform che chiede all'utente di inserire la formula nella colonna Q.

    E' solo che mi piacerebbe capire come si dovrebbe scrivere il codice in modo che un domani se ho lo stesso problema saprei come affrontarlo.

     
     Cells.EntireColumn.AutoFit
        
        l = Range("C100000").End(xlUp).Row
        Range("C2:C" & l).Select
                
        For Each xCell In Selection
        If xCell <> 0 Then
        xCell.value = xCell.value
        End If
        Next xCell



  • di Zasso data: 22/04/2013 09:30:52

    Allora, il tuo codice funziona bene. Mi inserisce la formula nella colonna e mi aggiorna i dati (prima dovevo farglieli aggiornare io).

    Ho provato ad utilizzarla per la parte con i filtri (il codice è qui sotto).
    Sembra funzionare (Nel senso che mi inserisce la formula solo nelle celle della selezione) ma alla fine mi da un messaggio con scritto 400 (Eccolo qui imageshack.us/photo/my-images/822/63371388.png/) e si blocca la macro
     
    Cells.AutoFilter field:=3, Criteria1:=">=600000000", Operator:=xlAnd, Criteria2:="<700000000"
        
    q = Range("O100000").End(xlUp).Row
    Range("Q2:Q" & q).FormulaR1C1 = "=Label_budget(ROW())"
        
    [Q2].AutoFill Destination:=Range("Q58:Q" & q).SpecialCells(xlCellTypeVisible), Type:=xlFillSeries



  • di Vecchio Frac data: 22/04/2013 10:05:05

    Argh, il mitico errore 400 vuoto senza spiegazioni :(
    Accade quando nel codice si fa riferimento in modo errato a un file, un foglio o un range. Ma la casistica è variopinta :)
    Io in generale diffido di SpecialCells.