|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Salve. Avrei bisogno di un aiuto da qualcuno più pratico di me con le macro e Vb. Faccio direttamente un esempio di quello di cui ho bisogno. Ho, poniamo in a3 una formula il cui risultato varia al variare del valore iscritto in a1. Quest'ultimo varia grazie ad un ciclo For...Next. Vorrei copiare ogni risultato della formula in celle successive. per es. per a1 = 1 --> a3 = 8 da copiare in b1, per a1 = 2 ---> a3 = 9 da copiare in b2 e così via in b3, b4, b5....tante volte quanto dura il ciclo. Come passo fare ? vi ringrazio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
non è mica tanto chiaro quello che ti serve. ad esempio il ciclo for su cosa opera e su cosa riversa i risultati, la formula è definita nel codice del VBA? a lume di naso non conoscendo la struttura del tuo codice suppongo che sia sufficiente applicare la propietà offset dell'oggetto Range o Cells. Se ci potessi mostrare il codice che hai realizzato o fare un esempio più chiaro sarebbe più facile esserti d'aiuto. saluti Andrea
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Innanzitutto, grazie mille per la risposta andrea. Scusa, cerco di essere più chiaro. Questo è un esempio molto semplice di quanto ho scritto finora :
Dim i As Integer For i = 2 To 10 Step 2 Range("c34").Value = i Range("c36").Select Selection.Copy Range("f36").Select ActiveSheet.Paste Application.CutCopyMode = False Next i
In C36 io ho, poniamo un esempio semplice, la seguente formula =C34+2 In questo modo il valore iscritto nella cella C34 varia da 2 a 10, e influenza il risultato della formula iscritta nella cella C36. Così per c34 = 2,4,6,8,10 avrò c36 = 4,6,8,10,12. Io vorrei che questi risultati vengano via via copiati e incollati nelle celle da f36 in giù ( f37,f38,f39...), in modo che al termine della routine, io avrò la lista di tutti i risultati ottenuti in C36 al variare di i ( ovvero al variare di c34 ). Nella mia macro sono sempre copiati in f36. Spero di essere stato più chiaro. Ti prego aiutami. Grazie
|
|
Rank: Member
Iscritto dal : 10/4/2000 Posts: 0
|
ciao condivido con a10n11 sei stato molto impreciso comunque provo una macro da cio' che ho capito dal tuo messaggio in a1 hai un dato che varia con un ciclo for , in a2 hai un dato fisso , mi sembra 7 , in a 3 hai la somma dei 2 dati con un ciclo for da 1 a 10 ottieni nella cella a3 il dato 17 cioe a2=7+il ciclo for da 1 a 10 . adesso tu vuoi sviluppare il ciclo for nella colonna b da b1 a b 10 (nel mio esempio) di conseguenza devi fare cosi Public Sub aaa() For i = 1 To 10 Range("a3") = i + Range("a2") Cells(i, 2) = i + Range("a2") Next i End Sub nella colonna b per tutto il ciclo for a partire da b1 ti verra copiato il dato relativo alla cella a1 (ciclo for )+ la cella a2 (valore fisso )
spero di aver capito cio che volevi , al massimo spiegati meglio
ciao
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Ciao. Si lo so, sono stato impreciso. Ho cercato di rimediare nel mio nuovo post. Pensi sia abbastanza chiaro ? Se sì, la tua macro è valida per il caso che ho esposto ? Ti ringrazio molto.
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
Scusate nuovamente. La soluzione proposta da C.Broggio va nella direzione di ciò che voglio, tuttavia devo aggiungere un'ulteriore elemento : i varia da 2 a 10 solo per semplificare. Se, come nel mio secondo post, i varia in ragione di uno step 2 ( ma potrebbe essere 100 o qualsiasi altro numero, così come i potrebbe variare da 21 a 70, tanto per dire ), io vorrei comunque sviluppare il ciclo in celle successive come f36, f37, f38... ( o b1,b2,b3...). Come fare ? Grazie ancora.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
ora è un pochino più chiaro. prova avedere se ti risolver questa Sub ricopia() dim riga,colonna riga=1 colonna=4 for i=2 To 10 step 2 cells(1,1)=i cells(3,1).select Selection.copy cells(riga,colonna).select selection.PasteSpecial Paste:=xlvalues riga=riga+1 Next end sub evidentemente come riferimenti di cella dai quelli che ti servono. saluti andrea
|
|
Rank: Member
Iscritto dal : 10/4/2000 Posts: 0
|
ciao andrea ha dimenticato una riga di codice ti scrivo la macro completa Sub ricopia() Dim riga, colonna riga = 1 colonna = 4 For i = 2 To 10 Step 2 Cells(1, 1) = i Cells(3, 1).Select Selection.Copy Cells(riga, colonna).Select Selection.PasteSpecial Paste:=xlValues Application.CutCopyMode = False riga = riga + 1 Next End Sub
ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
Broggio, grazie per l'integrazione. non ho usato i comandi screenupdating e cutcopymode perchè visto che guayas conosce Vba pareva superfluo. saluti andrea
|
|
Rank: Member
Iscritto dal : 12/20/2001 Posts: 0
|
E' semplicemente perfetto!!! Che dire ? Grazie ad entrambi, per aver risolto il mio problema e per avermi dedicato un pò del vostro tempo !! In pratica sto cercando di svilupparmi un file per testare trading systems per conto mio. Ora, mi basta sostituire inizio e fine del ciclo for ( che sono, nel mio caso, gli estremi del range entro i quali far variare i parametri temporali di qualsivoglia indicatore ) con riferimenti ad altre celle, ed il gioco è fatto...Io sono alle prime armi con Vba ( quindi vi invidio ) e sto scoprendo possibilità illimitate !!! Ancora grazie ! ciao
|
|
Guest |