|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, sto cercando di eliminate alcune delle operazioni manuali di copia/incolla e posizionamento di didascalie all’interno delle pagine dei vari files che contengono le mie arcinote tabelle. anche per eliminare- come ho già spiegato altre volte- quei terribili e a volte frequenti errori dovuti alla manualità che sono veri e propri sgambetti a tradimento : )) Ecco un’immagine del “teatro delle operazioni”: Vediamo: 1- in riga 10: nelle celle Q10- R10- S10- T10- U10- V10 ho 1 cod. di settore e 5 codici di componenti di magazzino (nell’es. per il sett. 73’26 ho cod.38- 162- 73- 50- 151) che in precedenza ho copiato in quelle celle da un altro foglio di lavoro 2- in cella B2 ho una dima, che copio in testa alle 5 tabelle che si riferiscono ai componenti (nell’esempio, visibile, la cella B15, e poi via via a scendere ) e che poi manualmente, modificando la lettera c [ics in Symbol] della dima, scrivo dentro a ciascuna i relativi cod. che abbiamo visto al punto 1 Nota: Le coordinate delle celle di cui al punto 1 sono sempre uguali (Q10- R10- S10- T10- U10- V10), come pure uguali sono quelle di cella B2 e B15 e sono tutte “ancorate” alla grande cella del titolo (B9), mentre quelle relative alle altre celle in capo alle altre 4 tabelle sono posizionate a distanza costante rispetto alla riga di fine tabella precedente, vale a dire la 3^ libera dopo la fine tabella precedente, in col.B Dialogo Macro e sequenza: -copia cella B2 in cella B15 e rinominala “c [ics in Symbol] seguìto da spazio e valore scritto in cella R10”-copia cella B2 in cella B3^riga vuota dopo la fine della 1^tabella e rinominala “g [ipsilon in Symbol] seguìto da spazio e valore scritto in cella S10”-copia cella B2 in cella B3^riga vuota dopo la fine della 2^tabella e rinominala “r [ro in Symbol] seguìto da spazio e valore scritto in cella T10”-copia cella B2 in cella B3^riga vuota dopo la fine della 3^tabella e rinominala “j [fi in Symbol] seguìto da spazio e valore scritto in cella U10”-copia cella B2 in cella B3^riga vuota dopo la fine della 4^tabella e rinominala “q [teta in Symbol] seguìto da spazio e valore scritto in cella V10”Fine Spero di avere esposto tutto in modo sufficientemente chiaro... :)) Grazie assai e buona serata, eZio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve siccome la siegazione non è supportata dalla vista delle immagini è difficile interpretare la domanda. pare che ci siano delle difficoltà a raggiungere il tuo sito dove sono le immagine postate. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, infatti, ho notato... ora dovrebbe essere tutto ok. Spero di essere stato sufficientemente chiaro... in realtà è molto più facile a farsi che a dirsi... :)))
Grazie per tutto, buona giornata eZio
EDIT Stanno facendo manutenzione al server... non appena avranno finito si riusciranno a vedere le immagini, mi spiace del disguido...
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve come puoi vedere la macro l'ho chiamata Booh() sta a significare che ho provato ad interpretare la richiesta. vedi se almeno si avvicina a quanto chiesto. Sub Booh() Dim mioarr(4) Dim sigle() As Variant sigle = Array("c", "g", "r", "j", "q") n = 0 riga = 15 Set codici = Sheets("foglio1").Range("R10:V10") For Each cl In codici mioarr(n) = cl.Value n = n + 1 Next Set codici = Nothing For i = LBound(sigle) To UBound(sigle) Cells(riga, 2).Value = sigle(i) & " " & mioarr(i) With Cells(riga, 2).Font .Name = "Symbol" .Size = 10 End With RR = Cells(riga, 2).End(xlDown).Row riga = Cells(RR, 2).End(xlDown).Row + 2 Next i End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, so di essere un immenso scocciatore, ma penso che tu abbia capito che sono anche un grande appassionato della Materia... :)) ...e forse questo mi salva. Detto questo... Mamma mia quanto è bella questa macro!! Vorrei capirne le sfumature... passo-passo, se e quando ne hai voglia e tempo... La macro funziona senza dare errori e sistema le 5 sigle al posto giusto, ma non vi copia dentro i rispettivi 5 codici del Range R10:V10 Nell'esempio il cod.38 dovrebbe andare con la isc, il cod.162 con la ipsilon, il cod.73 con il ro, il cod.50 col fi e il cod.151 con la teta
-ho modificato il Size da 10 a 18 perché mi serve più grande, ma non riesco a inserire correttamente l'istruzione di colorare di rosso i caratteri -ho incrementato di 1 la riga dell'istruzione riga = Cells(RR, 2).End(xlDown).Row + 2 Dobbiamo trovargli un bel nome, perché e molto vicina alla "soluzione finale" e Booh non le rende onore..... ;)) Grazie infinite, buona serata eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto: La macro funziona senza dare errori e sistema le 5 sigle al posto giusto, ma non vi copia dentro i rispettivi 5 codici del Range R10:V10 Nell'esempio il cod.38 dovrebbe andare con la isc, il cod.162 con la ipsilon, il cod.73 con il ro, il cod.50 col fi e il cod.151 con la teta
salve Il nome del foglio su cui lavori come si chiama? io ho usato quello di default "Foglio1" se il nome del tuo foglio è diverso cambialo nella riga che segue: Set codici = Sheets("foglio1").Range("R10:V10") di seguito le spiegazioni di quello che esegue la macro: Sub Booh() dichiaro una matrice con 5 elementiDim mioarr(4) Dim sigle() As Variant Creo una Matrice con i 5 elementi che rappresentano le sigle sigle = Array("c", "g", "r", "j", "q") n = 0 riga = 15 qui di seguito carico la matrice "Mioarr" con i valori estratti con il ciclo For dal Range R10:V10 Set codici = Sheets("foglio1").Range("R10:V10") For Each cl In codici mioarr(n) = cl.Value n = n + 1 Next Set codici = Nothing Eseguo il ciclo per ogni elemento della Matrice "Sigle"For i = LBound(sigle) To UBound(sigle) scrivo nel foglio nella cella definita da "Riga" il primo elemento della matrice "Sigle" e il primo elemento della Matrice "Mioarr"Cells(riga, 2).Value = sigle(i) & " " & mioarr(i) With Cells(riga, 2).Font .Name = "Symbol" .Size = 10 End With con RR prelevo la prima riga della tabellaRR = Cells(riga, 2).End(xlDown).Row cerco l'ultima riga della tabella + 2 righe che diventeranno il mio prossimo valore di Rigariga = Cells(RR, 2).End(xlDown).Row + 2 Next i End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, innanzi tutto Grazie per la spiegazione, molto chiara... come sempre del resto ;) Code:Il nome del foglio su cui lavori come si chiama? io ho usato quello di default "Foglio1" se il nome del tuo foglio è diverso cambialo nella riga che segue: Set codici = Sheets("foglio1").Range("R10:V10") eh sì...questa bella e doverosa bacchettata me la sono proprio meritata ahahahahahahache pollo!! che pollo!!... ma forse è perché sono molto stanco, stamattina ho cominciato a guardare tabelle alle 4... Un poco sono stato distratto dall'assenza di notifiche di errore (dopo tutto, il foglio1 non lo poteva trovare... perché non c'è proprio!! perché quindi non mi ha dato messaggi di errore?) Dai, torno a godermi quel capolavoro... e a tirarmi le orecchie da solo... ... per penitenza!! Grazie assai, buona serata, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, la macro è perfetta...!! Studiandomela per bene, sto cercando di capire come "incastrare" nel suo giusto posto, naturalmente scrivendola anche con la giusta sintassi, l'istuzione per copiare anche in cella B9 il contenuto di cella Q10. So perfettamente di essere un vero (genuino fin nel midollo) rompiscatole, ma la mia passione e la mia ammirazione per le tue creature è tale che proprio non riesco a starmene buono!! :)) Grazie infinite per tutto quello che stai facendo per me... Buona giornata eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve puoi incastrare l'istruzione prima del ciclo For oppure alla fine dopo il ciclo For. esempio 1) Dim mioarr(4) Dim sigle() As Variant sigle = Array("c", "g", "r", "j", "q") n = 0 riga = 15 Range("B9").Value = Range("Q10").Value Set codici = Sheets("foglio1").Range("R10:V10") For Each cl In codici ............ ........... 2) ............ ............ ............ For i = LBound(sigle) To UBound(sigle) Cells(riga, 2).Value = sigle(i) & " " & mioarr(i) With Cells(riga, 2).Font .Name = "Symbol" .Size = 10 End With RR = Cells(riga, 2).End(xlDown).Row riga = Cells(RR, 2).End(xlDown).Row + 2 Next i Range("B9").Value = Range("Q10").Value End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, ho preferito la seconda opzione: per un principiante come il sottoscritto è più "visibile" :))) Grazie, buona giornata eZio
|
|
Guest |