Moderatori: Anthony47, Flash30005
Allego il file , cosa dovrebbe fare la macro? come prima operazione dovrebbe registrare il valore in AN1 (nome :"piu")con il val 1 e incollare questo 1 in BN3 successivamente copiare l'intervallo AT453:BJ453 (sono formule e come tali cambiano in relazione alla casella di selezione)e incollarlo solo valori il BO3.Ripetere tuttele operazioni su descritte dove AN1 ha il valore "2" incollarlo questa volta in BN4 di seguito copiare sempre l'intervallo AT453:BJ453 che nel frattempo ha altri valori a seguito del cambiamento
della cella AN1 e incollarlo in BO4 solo valori, queste operazioni ripeterle fino a quando AN1 assume il valore 42.
Si tenga presente che la macro solo adesso copierà l'intervallo AT453:BJ453 perchè attualmente la riga 453 è l'ultima con gli aggiornamenti fermo restanti leoperazioni descritte l'intervallo AT453:BJ453 cambierà in AT454:BJ454 ,ho lasciato le colonne inizio e fine intervallo vuote per utilizzare eventualmente currentregion ultima riga (forse dico una cavolata?)
Sub Macro4()
'
Application.ScreenUpdating = False
Range("BO3:CE44").Select 'Cancello le righe dove si piazzeranno le nuove righe (42)
Selection.ClearContents
Range("AN1").Select 'seleziono AN1
ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva assume il valore 1
Range("AT451:BJ451").Select ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi con il cambiamento di AN1
Selection.Copy 'e lo copio .....
Range("BO3").Select 'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False ' in BO3 ... solo valori
Range("AN1").Select
ActiveCell.FormulaR1C1 = "2"
Range("AT451:BJ451").Select
Selection.Copy
Range("BO4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("AN1").Select
ActiveCell.FormulaR1C1 = "3"
Range("AT451:BJ451").Select
Selection.Copy
Range("BO5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
'.......... ecc
'......... ecc
Range("AN1").Select
ActiveCell.FormulaR1C1 = "42"
Range("AT451:BJ451").Select
Selection.Copy
Range("BO44").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Sub Macro4Bis()
'
Application.ScreenUpdating = False
Range("BO3:CE44").ClearContents 'Cancello le righe dove si piazzeranno le nuove righe (42)
For I = 1 To 42
Range("AN1").Value = I
'' Range("AN1").Select 'seleziono AN1
'' ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva assume il valore 1
Range("AT451:BJ451").Copy ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi con il cambiamento di AN1
'' Selection.Copy 'e lo copio .....
'' Range("BO3").Select 'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
Range("BO3").Offset(I - 1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False ' in BO3 ... solo valori
Next I
Application.ScreenUpdating = True
End Sub
Anthony47 ha scritto:Ha ah, ma allora e' semplice. ProvaCi sono molte righe "commentate", per mettere in evidenza alcune delle modifiche apportate; si possono eliminare.
- Codice: Seleziona tutto
Sub Macro4Bis()
'
Application.ScreenUpdating = False
Range("BO3:CE44").ClearContents 'Cancello le righe dove si piazzeranno le nuove righe (42)
For I = 1 To 42
Range("AN1").Value = I
'' Range("AN1").Select 'seleziono AN1
'' ActiveCell.FormulaR1C1 = "1" 'quindi la cella attiva assume il valore 1
Range("AT451:BJ451").Copy ' in conseguenza del val 1 nella cella AN1 l'intervalloAT451:BJ451( formule) assumerà valori 'diversi con il cambiamento di AN1
'' Selection.Copy 'e lo copio .....
'' Range("BO3").Select 'seleziono La cella BO3 dove si piazzerà l''intervallo composto da 17 celle precedentemente copiate
Range("BO3").Offset(I - 1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False ' in BO3 ... solo valori
Next I
Application.ScreenUpdating = True
End Sub
Ciao
Guarda che proprio non avevo capito...Ottimo Anthony , mi pareva strano che non avessi capito
Ora ti chiedo nel nodulo troviamo l'istruzione " Range("AT451:BJ451").Copy" , quando faccio delle prove nella macro mia che facevo SOSTITUIsci Range("AT451:BJ451").Copy con Range("AT450:BJ450").Copy ora e un po più semplice
ma devo andare sempre nel modulo , c'è la possibilità di governare l'operazione dal foglio; che so nella cella cj2 metto 445 e gli do un nome(per richiamarlo nella macro) così mi rendo conto a che estrazione si riferisce lo scenario della macro generata ?!
Intanto grazie per quello già fatto.
Cells(Range("CJ2").Value,"AT").Resize(1, 17).Copy
Anthony47 ha scritto:Ma hai provato?
Anthony47 ha scritto:Perdona, ma quando ho letto la risposta mi e' venuto da sorridere...
Quello che ti chiedo di provare e' il mio suggerimento (16-maggio sera), non il tuo (ancora non recepito da Microsoft ).
Ciao
Torna a Applicazioni Office Windows
Archiviare selezione in formato .pdf Autore: Carletto Ribolla |
Forum: Applicazioni Office Windows Risposte: 9 |
Come fare per raddrizzare VBE da orizzontale a verticale . Autore: Gianca532011 |
Forum: Applicazioni Office Windows Risposte: 3 |
Bordi esterni in una selezione qualsiasi Autore: recalcatiiti |
Forum: Applicazioni Office Windows Risposte: 18 |
menu a tendina con filtro per selezione elenco Autore: marcus69 |
Forum: Applicazioni Office Windows Risposte: 13 |
Visitano il forum: Nessuno e 34 ospiti