Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

formula-codice vba

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

formula-codice vba

Postdi giorgioa » 22/09/13 19:42

Salve a tutti,

una richiesta semplice se possibile.
Sono in casella b2
ed ho la seguente formula
=(b1+1)
come si trasforma in codice VBA?
i riferimenti sono relativi
Grazie
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Sponsor
 

Re: formula-codice vba

Postdi Francesco53 » 22/09/13 21:38

Ciao Giorgio, se può esserti utile:
Codice: Seleziona tutto
Sub Somma()
n1 = Cells(1, 2)
Cells(2, 2) = n1 + 1
End Sub

Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: formula-codice vba

Postdi giorgioa » 22/09/13 22:23

Ciao Francesco53

così com'è posta mi da il risultato sempre in b2
praticamente il tuo codice mi darebbe sempre il risultato in b2

Come vedi il tuo codice deve sostituire la terza riga di questo for
Per cui se ora sta in b2 poi sarà in b3
e se b1 =0 b2 diventa 1
e se b2=1 b3 diventa 2
eccetera spero di essermi spiegato cosa deve fare il codice VBA

For X = 1 To 1
ActiveCell.FormulaR1C1 = "="
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Next X
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi Anthony47 » 22/09/13 23:47

Secondo me il tuo codice gia' fa quello che chiedi; in particolare
Codice: Seleziona tutto
ActiveCell.Offset(0, 1).Range("A1").Select   'Seleziona la cella sottostante a quella "Attiva"
ActiveCell.FormulaR1C1 = "=R[-1]C+1"    'Inserisce nella cella selezionata la formula


Non commento il loop For X = 1 To 1 /Next X; ne' capisco a che serve ActiveCell.FormulaR1C1 = "=", che (in caso di vero loop) al secondo giro cancella la formula messa nel primo. Ma se l' hai messa ci sara' un perche'...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula-codice vba

Postdi Flash30005 » 23/09/13 03:13

Utilizzare macro per inserire formule mi pare alquanto stravagante perché la maro può inserire il valore calcolato direttamente nella cella destinazione.
Pertanto userei un codice di questo tipo
Codice: Seleziona tutto
Sub SommaB()
For RR = 1 To 30
Range("B" & RR + 1).Value = Range("B" & RR).Value + 1
Next RR
End Sub


Ciao

P.s. leggi il post di Anthony
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: formula-codice vba

Postdi giorgioa » 23/09/13 11:07

Salve a tutti,

spiego il perchè di questo codice da inserire in quel FOR:
immettendo la formula essa rimane sempre attiva,
e poichè deve numerare centinaia di caselle mi appesantisce il foglio
nel senso che man mano che scende di riga rallenta l'elaborazione.
Perchè a fianco alla casella B si sono diverse formule che vengono distribuite,
pertanto se si può fare a meno di qualche formula ....
immettendo il codice invece rimane cella morta,
poi quel for sta dentro un altro for e dopo che il secondo
for ha finito passa alla riga successiva
e per ogni riga deve numerare incrementando di una
unità rispetto alla casella precedente.
Scusate se non ho usato terminologia appropriata
l'essenziale che mi sono spiegato (spero)
Saluti
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi giorgioa » 23/09/13 11:57

Salve Flash,

ho inserito al posto della riga con la formula
il tuo for, poiche devo dimensionare RR di
quale categoria fa parte? Cioè integer? No, range? no. ecc.

Però vorrei precisare che il numero che scrive nella casella in cui si trova
deve tener conto sempre della cella sopra nel senso che se b4 =4
e sono in b5 sarà 5, (4+1=5)

Posso fare una domanda?
sarebbe possibile far funzionare SOLO la riga delle istruzioni? cioè
senza For RR e quindi senza next RR
Ho provato ad eliminare il for e next RR
ma mi da errore run time 91 o variabile del blocco with non impostata

Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi Flash30005 » 23/09/13 13:49

Comincio a non capire più nulla
la macro somma 1 alla cella B1 e trascrive il valore (2) alla cella B2
poi somma 1 alla cella B2 e lo trascrive alla cella B3
Da quanto dici sembra che tu non abbia provato la macro che ti ho postato.
Il ciclo for... next è necessario per passare da una cella all'altra altrimenti il lavoro lo dovrai fare manualmente.

Ciao

P.s. io ho messo il limite a 100 ma potrai inserire qualsiasi altro numero (purché compatibile con le righe della tua versione di Excel)
per quanto riguarda il dimensionamento di RR può essere Integer se non superi il valore 32000 (circa) altrimenti usa Long
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: formula-codice vba

Postdi giorgioa » 23/09/13 14:26

Chiedo scusa Flash,

non vorrei entrare in un frainteso e mi spiego
la tua macro messa da sola funziona perfettamente
ora se guardi il listato sotto quando lancio la macro mia
comprensiva della tua in b non scrive nulla
Il tuo for =1 to 1 sono costretto a 1 perchè
al prossimo giro (rigo 3 ) dovrà aumentare di una unità
rispetto alla casella sopra.
se questo non si può fare non lo so
Il tuo for deve lavorare nel mio altrimenti non si può fare.
For X = 1 To 1
ActiveCell.FormulaR1C1 = "="
ActiveCell.Offset(0, 1).Range("A1").Select
'ActiveCell.FormulaR1C1 = "=R[-1]C+1"
For RR = 1 To 1
Range("B" & RR + 1).Value = Range("B" & RR).Value + 1
Next RR
Next X
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi Flash30005 » 23/09/13 14:32

Non capisco cosa faccia e nemmeno a cosa serve la tua macro
devi usare solo la mia che somma 1 al valore della cella superiore
il cilco for X 1 to 1 è inutile non è un cilco for next ovvero scrive solo in una cella e si ferma
quindi il cilco fa dimensionato per un range da 1 a 100, 1000, o 10000 etc
ma con 1 non ha senso

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: formula-codice vba

Postdi giorgioa » 23/09/13 15:02

Ancora una volta chiedo scusa

e pongo la domanda

la seguente formula cosa fa?
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
nella posizione in cui si trova di colonna B aumenta di una
unità il valore della cella sopra.

Il tuo codice chiedo che faccia solo questo
messo nel mio for.
Io più di così non posso spiegarmi

For X = 1 To 1
ActiveCell.FormulaR1C1 = "="
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=R[-1]C+1"
Next X
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi Flash30005 » 23/09/13 17:37

Il mio codice sostituisce la formula
Ripeto, penso sia inutile usare una macro per inserire delle formule quando la stessa macro può ricavare il valore della cella precedente sommando 1 alla stessa e inserirlo nella cella successiva, come fa il codice da me postato.
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: formula-codice vba

Postdi Anthony47 » 24/09/13 01:45

Guarda il messaggio di Flash, sopra.
Suggerimento: non darci nessun codice e spiegaci cosa vorresti fare tramite vba (vuoi mettere delle formule sul foglio, vuoi calcolare dei valori per usarli nella macro, vuoi mettere dei valori nelle celle, ??)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula-codice vba

Postdi giorgioa » 24/09/13 10:01

Salve Antony,

faccio presente che il codice di Flash è perfetto quindi lungi da me dire altro.
cerco di spiegarmi: quello in cui metto il codice di Flash è un ciclo in un altro
ciclo, dopo aver scritto in A = dopo deve scrivere il numero in B, dopo si entra in un altro ciclo che deve
proseguire sulla riga a scrivere formule quando ha finito di scrivere
formule a destra deve tornare ad inizio riga e scende alla riga successiva
e ricomincia il primo ciclo cioè in A = in B l'altro numero e quindi prosegue
con l'altro ciclo.
Ora se il codice di Fash quando passa per B non mi scrive il numero o meglio
non mi può scrivere il ciclo di numeri in colonna mettiamo fino a 30 e poi
ritornare su da dove ha cominciato a scrivere per terminare il secondo ciclo
cioè le formule a destra.
Ecco perchè sono costretto a scrivere For RR = 1 to 1 e non 30 che apparentemente
non ha senso to 1 oppure il codice deve riguardare solo che quando passa per B
quando scrive il numero controlla quello che sta sopa e aggiunge 1.
Spero di aver chiarito l'equivoco,
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi giorgioa » 24/09/13 11:39

Ciao,
ho riletto l'ultimo post pare non abbia risposto a tutto
lo scopo di inserire un codice al posto della formula è
perchè quando invio la macro quando distribuisce le formule
nel foglio man mano che aumentano rallenta lo sviluppo
della macro, poi se in A ho "=" è perchè in A mi serve
comunque un dato in quanto a fine loop il 2° deve tornare
in colonna A e rigo sotto. in fatti quando il 2° finisce di
distribuisce dati nella riga torna in A e della stessa riga
fa il copia e incolla in valori.
Insomma con le formule ci si deve adattare.
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi scossa » 24/09/13 12:04

giorgioa ha scritto:Ciao,
ho riletto l'ultimo post pare non abbia risposto a tutto
lo scopo di inserire un codice al posto della formula è
perchè quando invio la macro quando distribuisce le formule
nel foglio man mano che aumentano rallenta lo sviluppo
della macro, poi se in A ho "=" è perchè in A mi serve
comunque un dato in quanto a fine loop il 2° deve tornare
in colonna A e rigo sotto. in fatti quando il 2° finisce di
distribuisce dati nella riga torna in A e della stessa riga
fa il copia e incolla in valori.
Insomma con le formule ci si deve adattare.
Ciao


Scusa, ma non capisco che senso abbia discutere se non mostri l'INTERO CODICE della sub????

Che cosa si può capire se continui a mostrare quattro righe in un tutto??

Bho?!
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: formula-codice vba

Postdi Anthony47 » 26/09/13 14:19

E' probabile che giorgioa sia rimasto disorientato dalle diverse richieste mie (non darci un codice, dicci che cosa devi fare) e di scossa (dacci tutto il codice), che denota solo un nostro diverso approccio alla comprensione della richiesta...

Ora io ho capito che vuoi evitare di inserire formule nelle celle, quindi calcolare il risultato da macro e inserirlo nelle celle; ora mi sembra che tu voglia semplicemente creare un elenco incrementale (1, 2, 3, 4, ...) in una colonna specifica di una tabella che vai a compilare con altro codice.
Se e' cosi', allora forse il modo piu' semplice sarebbe inserire nel tuo loop (quello che crea la tabella) una variabile che incrementi a ogni linea che aggiungi; ad esempio

Codice: Seleziona tutto
Dim Headr as Long   'dichiarazioni in testa

Headr=0     'prima del loop che compila la tabella

Headr = Headr +1     'nel loop, da eseguire a ogni riga che aggiungi
Cells(xx, yy).Value = Headr
xx e yy sono le coordinate della cella in cui devi scrivere questo numero

Spero che questo spunto ti sia utile; se No allora proviamo come suggerisce scossa: fai vedere l' intera macro.

Ciao a tutti.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula-codice vba

Postdi giorgioa » 26/09/13 15:33

Salve Anthony47,

ho trascritto il codice nelle posizioni che mi hai indicato
all''avvio della macro mi chiede di definire le variabili "XX" e "YY",
ho cambiato le XX in "B" e va ad YY:
ho provato con cells("B" & headr +1) ma mi da chiamata di routin
non valida.
non so come andare avanti.

Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Re: formula-codice vba

Postdi Anthony47 » 27/09/13 01:09

Anthony ha scritto:[...]ora mi sembra che tu voglia semplicemente creare un elenco incrementale (1, 2, 3, 4, ...) in una colonna specifica di una tabella che vai a compilare con altro codice.
Se e' cosi', allora forse etc etc
Ho fatto l' ipotesi che la tua macro vada a compilare una tabella, accanto alla quale vuoi mettere una numerazione incrementale; se hai dato seguito al suggerimento allora dovrebbe significare che l' ipotesi era giusta (pero' non sarebbe male confermare che siamo sulla strada giusta o che invece le spariamo a caso).
Ho anche scritto, in riferimento all' istruzione Cells(xx, yy).Value = Headr, che xx e yy sono le coordinate della cella in cui devi scrivere questo numero. Per la sintassi della proprieta' "Cells", xx e' il numero di riga, yy e' il numero di colonna, in genere fisso (1 per A, 2 per B, etc etc); dovrai quindi usare questi valori al posto di xx e yy, seguendo le stesse convenzioni che stai usando per compilare la tabella. Immagino che hai un contatore che usi per compilare la riga 1 della tabella, poi la riga 2, etc: ecco, userai lo stesso contatore al posto di xx e sostituirai yy con la colonna (1, 2, 3, ...) in cui vuoi inserire la numerazione.

Se con questo ulteriore spunto non risolvi allora sposo la richiesta di scossa: facci vedere il codice completo, magari ci illuminiamo...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: formula-codice vba

Postdi giorgioa » 27/09/13 23:02

Salve Anthony,

http://www.filedropper.com/dati

posto tutto il file e non solo la macro anche perchè con la sola macro e senza dati non sapreste
che farvene,
il tasto della macro interessata è Dati
internamente oltre al problema della colonna B ho fatto un'altra richiesta di trasformare
l'altra formula in codice VBA.
Nella macro ho eliminato cose inutili per quel che mi è stato possibile.
Ora aspetto buone nuove. ho altri chiarimenti.
Ciao
giorgioa
Utente Senior
 
Post: 544
Iscritto il: 16/04/12 15:00

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "formula-codice vba":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti