Autofill su selezione di cell
Hai un problema con Excel? 
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.
Vuoi Approfondire?