Salve,
ho la necessita di creare una "macro" che copi un valore risultante da una formula e accodarlo in una cella con più addendi.
Ho provato con il registratore ma non mi permette di copiare "beep".
Questi i dettagli riportati anche nel file allegato:
Macro che faccia queste cose:
1. Prendere il valore della cella B1
2. Sommare (accodare) il valore B1 nella casella B2
3. Azzerare la cella B1
4. Cambiare il colore dei caratteri "rosso" in "nero".
5. Posizionarsi nella prima cella libera dei valori B15
Attendo lumi, grazie.
rioma
Ciao Rioma...ho spulciato nei messaggi e ho visto che ancora non ti sei presentato?
Quando hai due minuti passa di QUI
![]()
Avvisi generali e importanti, pena CHIUSURA thread e/o BAN. Il crossposting è vietato. Le richieste di "pappa_pronta" sono vietate. Utilizzate i tag CODE per il codice. Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
Sii gentile quando possibile. È sempre possibile
(Dalai Lama)
Codice da associare ad un tasto:
Codice:Sub Test() Dim uRiga As Long Range("b2") = Range("b2") + Range("b1") Range("b1") = "" uRiga = Range("B" & Rows.Count).End(xlUp).Row Range("B4:B" & uRiga).Font.ColorIndex = xlAutomatic Range("B" & uRiga + 1).Select End Sub
Ciao Rubik72,
funziona tutto ma mi ero spiegato malenel punto 3.
La cella B1 non deve essere azzerata alla fine della somma ma contenere la stessa formula che c'era prima ovvero =+B3-B2
Elimina la riga in rosso:
Codice:Sub Test() Dim uRiga As Long Range("b2") = Range("b2") + Range("b1") Range("b1") = "" uRiga = Range("B" & Rows.Count).End(xlUp).Row Range("B4:B" & uRiga).Font.ColorIndex = xlAutomatic Range("B" & uRiga + 1).Select End Sub
...elementare Watson.
Ma l'appetito vien mangiando (vedi esempio allegato).
[IMG][/IMG]
Se il range è una tabella la macro porta il cursore sulla prima cella dopo la tabella, inoltre mette il colore nero su tutta la tabella.
Dovrebbe invece:
_posizionarsi sulla cella b16 (prima cella libera)
_mantenere il colore rosso dalla b16 in giù
rioma
Ciao e un saluto a Rubik,
potresti aggiungere al codice queste due righe in rosso:
Codice:Sub Corrispettivo() ' ' Corrispettivo Macro ' Dim uRiga As Long 'somma il valore di b1 con i valori di b2 Range("b2") = Range("b2") + Range("b1") 'azzera la cella b1 'Range("b1") = "" 'mette il colore nero nei corrispettivi versati uRiga = Range("B" & Rows.Count).End(xlUp).Row Range("B4:B" & uRiga).Font.ColorIndex = xlAutomatic 'posiziona il cursore nella prima cella libera della colonna b Range("B" & Range("B" & Rows.Count).End(xlUp).End(xlUp).Row + 1).Select Range("B" & Range("B" & Rows.Count).End(xlUp).End(xlUp).Row + 1).Font.ColorIndex = 3 End Sub
Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!
...manca ancora poco.
La prima cella successiva (b16) è di colore rosso ma quelle successive sono di colore nero (invece devono rimanere rosso).
Ciao,
non avevo capito pensavo che volevi colorata solo l'ultima.
Basta cambiare la riga del colore, cioè questa:
con questa:Codice:Range("B" & Range("B" & Rows.Count).End(xlUp).End(xlUp).Row + 1).Font.ColorIndex = 3
Codice:Range("B16:B" & Rows.Count).End(xlUp).Font.ColorIndex = 3
Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!
...no, ancora non funziona.
Con questa ultima modifica mette il colore rosso nella cella b15 (e le altre nere).
Quello che voglio io è il colore rosso in tutte le celle che stanno sotto (ovvero dalla b16 alla b35).
Se però successivamente inserisco altri dati deve cambiare in colore nero le celle interessate dalla macro lasciando sempre quelle sotto in rosso.
Qui mi sa che non ci capiamo, prova cosi, ti posto il codice completo:
Codice:Sub Corrispettivo() Dim uRiga As Long With Sheets(1) .Range("B2") = Range("B2") + Range("B1") .Range("B" & Range("B" & Rows.Count).End(xlUp).End(xlUp).Row + 1).Select .Range("B16:B" & Range("B" & Rows.Count).End(xlUp).End(xlUp).Row + 1).Font.ColorIndex = 3 .Range("B5:B15").Font.ColorIndex = 0 End With End Sub
Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!
Ho modificato il codice e questo è quello che volevo (vedi allegato).
Altra domanda:
E' possibile nella cella b3 vedere il dettaglio degli addendi (=1218+2661+1657) anzichè il valore complessivo (5536)?
In sostanza copiare e accodare ad una serie di numeri il valore contenuto nella cella b1 (1657).
Questo mi permette di controllare gli intervalli inseriti.
Ammesso che stavolta abbia capito, per la tua ultima richiesta, aggiungi questa riga:
Codice:Range("B3") = Range("B3") & "+" & Range("B" & Range("B" & Rows.Count).End(xlUp).End(xlUp).Row)
Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!
...non è facile farmi capire scrivendo per me che sono nuovo.
Inoltre ti avevo dato un dato errato: la cella in cui volevo intervenire era b2 e non b3.
Cerco di rispiegarmi bene con calma:
_in b2, una volta attivata la macro, voglio aggiungere ai valori già esistenti (=1218+2661) il numero che sta in b1 (1657 che in sostanza è la somma dei valori in rosso)
_come dicevo prima la cella NON deve presentare il risultato finale (5536) ma tutti i dettagli (=1218+2661+1657).
Grazie per la pazienza.
Se ho capito bene:
Codice:Range("b2").formula= range("b2").FormulaLocal & "+" & range("b1")
...hai capito benissimo. Perfetto.
Provo bene poi chiudo l'argomento.
Grazie di tutto e complimenti per la competenza.![]()
...ho inserito la macro (che funziona perfettamente nel file di esempio) nel mio foglio di lavoro con dati sensibili e mi da un msg di errore debug:
Da Forum: non funziona
Range("b2").Formula = Range("b2").FormulaLocal & "+" & Range("b1")
Incassi: funziona
Range("b2").Formula = Range("b2").Formula & "+" & Range("b1")
Qualcuno mi spiega il perche?
Visto che l'hai provata su un altro file (che noi non abbiamo), dovresti avviare la macro passo-passo con F8 e vedere che tipo di errore da e dove.
...ecco la sequenza dell'errore nel .jpg https://drive.google.com/open?id=0B6...05laDdmdnlpMFE
usa:
Codice:Range("b2").Formula = Range("b2").Formula & "+" & Range("b1")
...anche con questa modifica da lo stesso errore.
Forse perchè nel range ci sono troppi elementi? (vedi allegato)
https://drive.google.com/open?id=0B6...ndkaDg3T3VuT3c
...ecco.
Devi usare FormulaLocal, altrimenti quando hai dei decimali la formula risultante va in crisi, se usi il separatore "virgola". Quindi:
CiaoCodice:Range("b2").FormulaLocal = Range("b2").FormulaLocal & "+" & Range("b1")
Anthony
...corretto. Grazie.
Ciao
rioma
Condividi nei tuoi social!