|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
05-04-2012, 21.18.30 | #1 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
EXCEL AIUTO PER CICLO FOR e creazione indice
Sto cercando disperatamente di creare una macro che consenta di: - leggere tutti i fogli di un file (in modo dinamico). Cioè vorrei poter Far leggere i nomi di alcuni fogli del file o direttamente da una sezione di un foglio elenco oppure leggendoli direttamente perchè spesso cambiano denominazione. - riportare il contenuto di un range di celle in altro foglio. Mi piacerebbe anche trovare un sistema per creare un sommario che riporta denminazione di alcuni fogli del file e il numero di pagine progressivo. Grazie a tutti |
05-04-2012, 23.31.22 | #2 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Lo strumento "Registra macro" in Excel (anche Word ne è provvisto) è molto utile perchè scrive da solo parte del codice VBA che ti serve. Controlla il codice presente nel modulo, una volta che hai terminato la registrazione delle azioni compiute.
Purtroppo, tale strumento non è presente in Access. (Questo perchè necessita di quel pizzico di professionalità in più che per Word ed Excel non è richiesto) I fogli sono identificati sia numericamente, sia letteralmente, cioè se Excel contiene foglio1,foglio2,foglio3 i fogli saranno 1,2,3 Leggi il codice generato nel modulo per identificare quale classe e di conseguenza quali metodi e proprietà richiamare; Fai accesso agli oggetti attraverso il tasto F2 all'interno di VBA e sperimenta fino a trovare quelli confacenti al tuo obiettivo. Buon divertimento. |
06-04-2012, 09.02.23 | #3 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Ciao Lory, ti ringrazio per la segnalazione.
Prima di postare avevo già provato ma purtroppo non sono riuscito a trovare una soluzione sia pur scrivendo il codice direttamente in VBA. Rinnovo la richiesta di aiuto aperta a tutti per il ciclo complesso di selezione solo di un range di fogli predefinito ma chenon comprende TUTTI i fogli del file. Inoltre mi piacerebbe che la macro potesse selezionare l'elenco dei fogli stessi, direttamente da una sezione di un foglio dove sono già elencati e da cui potrei scegliere la "selezione" di quelli da attivare volta per volta. Es.: elenco fogli da selezionare per una azione nella macro: "Alfa", "Beta"... "gamma". Per l'indice da creare mi riferisco ovviamente solo ad excel. Grazie a tutti. |
07-04-2012, 10.28.09 | #4 | |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Quota:
esempio : Codice:
Sub name_f() n = 2 Cells(n, 4).Select For g = 1 To Sheets.Count Cells(n, 4).Value = Worksheets(g).Name n = n + 1 Next End Sub
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
|
07-04-2012, 19.11.05 | #5 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
In effetti non è molto chiaro.
Alexsandra ti ha postato una Sub procedure che itera tra i nomi delle schede (Sheets), in modo che ti riallacci al concetto di insieme per quanto concerne i fogli di lavoro. Come vedi, esiste una proprietà .count che identifica il numero di sheets. Ogni sheet, è gestita da diverse classi con diversi metodi e proprietà ognuna, Selection compresa. Se tu provassi a selezionare più sheets con Ctrl, ti ritroveresti nel codice VBA prodotto dal registratore di macro un'array di sheets all'interno di Selection, cosa piuttosto utile poichè l'istruzione Array può creare un insieme di oggetti di tipo variant... |
07-04-2012, 20.59.08 | #6 |
Guest
Messaggi: n/a
|
EDIT: risposta cancellata.
|
24-04-2012, 14.01.11 | #7 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Ciao,
cerco di spiegarmi meglio. Ho un file con molti fogli denominati diversamente. Vorrei poter selezionare con una macro alcuni di questi fogli indipendentemente dalla loro posizione nel file. Es. "Pippo", "Pluto"... Ciò perche ad ogni sottoinsieme di fogli vorrei far eseguire una operazione. Ad es.: Alcuni fogli selezionati saranno stampati, per un'altra selezione di fogli procedi con altre attività.. Però, poichè i nomi dei fogli cambiano spesso per esigenze di lavoro, vorrei fare in modo che la selezione avvenga prelevando i nomi dei fogli direttamente da un elenco aggiornato (range di celle) dove manutengo tutti i nomi dei foglietti. Ritengo che il ciclo sia il modo più efficace. Spero di essere stato chiaro! Scusate e grazie. Attendo un vostro aiuto. |
24-04-2012, 16.18.17 | #8 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Il codice di Alexsandra è molto chiaro ed è un po il contrario di quello che vorresti fare tu, sebbene ci siano un po tutti gli elementi per indirizzarti verso la soluzione: Tu devi verificare se il nome del foglio contenuto in una cella corrisponde a quello di uno dei fogli di Excel. In caso affermativo, devi selezionare l'intero foglio. Devi utilizzare IF THEN [ELSE] END IF, oppure SELECT CASE END SELECT.
Le proprietà di un oggetto possono essere lette oppure impostate. Non so a che livello tu conosca VBA, ma uno spezzone di codice da te prodotto potrebbe essere d'aiuto per indirizzarti meglio. |
24-04-2012, 17.03.27 | #9 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Ciao,
si in effetti ho notato che il codice segnalato fa l'esatto opposto di quello che vorrei, legge i nomi dei fogli e li riporta in sequenza in un range di celle. Io vorrei che l'istruzione leggesse i nomi riportati nelle celle (e che corrispondono ai nomi dei fogli) per eseguire una istruzione. Sto cercando di imparare il codice VBA poichè lo conosco pochissimo. Vi posto un esempio del lavoro. Sub areaprint() Application.ScreenUpdating = False Sheets("BR-Bdt").Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1: BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1R125,DT1:EB125,ED1:EL125,EN1:EV125, EX1:FF125,FH1:FP125, FR1:FZ125,GB1:GJ125,GL1:GT125,GV1:HD125,HF1:HN125, HP1:HX125,HZ1:IH125" Sheets("BR-Cib").Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1: BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1R125" Sheets("SOC-Bdt").Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1: BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1R125,DT1:EB125" End Sub |
24-04-2012, 17.29.39 | #10 |
Guarda dietro di te... una scimmia a tre teste!
Top Poster
Registrato: 05-11-2002
Loc.: 127.0.0.1
Messaggi: 4.688
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Per evitare errori nella trascrizione del codice utilizza la funzione CODE
Codice:
Sub areaprint() Application.ScreenUpdating = False Sheets("BR-Bdt").Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1:BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1:DR125,DT1:EB125,ED1:EL125,EN1:EV125, EX1:FF125,FH1:FP125, FR1:FZ125,GB1:GJ125,GL1:GT125,GV1:HD125,HF1:HN125,HP1:HX125,HZ1:IH125" Sheets("BR-Cib").Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1:BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1:DR125" Sheets("SOC-Bdt").Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1:BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1:DR125,DT1:EB125" End Sub |
24-04-2012, 17.31.37 | #11 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
come attivo la funzione code?
|
24-04-2012, 19.26.33 | #12 |
Guarda dietro di te... una scimmia a tre teste!
Top Poster
Registrato: 05-11-2002
Loc.: 127.0.0.1
Messaggi: 4.688
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
E' il quart'ultimo pulsante in alto, il cancelletto #
|
27-04-2012, 10.55.10 | #13 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
scusate c'è qualche contributo? Grazie
|
27-04-2012, 18.07.33 | #14 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Il codice di Alexsandra lo hai provato per vedere che cosa fa ?
Codice:
Sub areaprint() Application.ScreenUpdating = False If Worksheets(indexworksheets).Name = Cells(indexcells, 4).Value Then Sheets(Worksheets(index).Name).Select ActiveSheet.PageSetup.PrintArea = _ "B1:L125,N1:V125,X1:AF125,AH1:AP125,AR1:AZ125,BB1:BJ125,BL1:BT125,BV1:CD125, CF1: CO125 , CP1: CX125 , CZ1: DH125,DJ1:DR125,DT1:EB125,ED1:EL125,EN1:EV125, EX1:FF125,FH1:FP125, FR1:FZ125,GB1:GJ125,GL1:GT125,GV1:HD125,HF1:HN125,HP1:HX125,HZ1:IH125" End If ecc,ecc |
27-04-2012, 21.29.37 | #15 |
Newbie
Registrato: 30-01-2012
Messaggi: 16
|
Rif: EXCEL AIUTO PER CICLO FOR e creazione indice
Grazie Alex provo subito!!!
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Corso VBA | Alexsandra | Guide | 85 | 16-11-2016 12.11.51 |
Aiuto per excel | Hanger.85 | Office suite | 1 | 21-01-2009 23.59.47 |
Aiuto con Excel! | nike2cc | Office suite | 3 | 23-11-2007 14.36.59 |
Excel 2000 e VBA :problema con ciclo For...Next | damiano | Office suite | 11 | 29-06-2007 23.37.20 |
Aiuto su Excel | MEGS | Office suite | 2 | 08-09-2006 10.52.13 |