| | Post: 26 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
11/04/2018 15:31 | |
Buongiorno a tutti!
Sto impostando un file Excel "dinamico" per il controllo di alcuni progetti.
Avrei bisogno del vostro prezioso aiuto per risolvere due cose:
1)Inserire una macro che al clic del pulsante "Elimina Fogli" cancellasse, previo avviso, TUTTI i fogli presenti nel file, ad eccezione dei primi due (foglio Elenco e foglio Fac-Simile) e dell'ultimo (foglio Dati)
2)Inserire una formula (o macro se necessario) che riporti in colonna L del foglio "Elenco" il contenuto della cella H35 di ciascun foglio, ma soltanto per i fogli in cui la colonna D non è vuota.
(nell'esempio che allego dovrebbe riportare il contenuto della cella H35 per i fogli PIPPO e TOPOLINO).
Ad eccezione dei primi due e dell'ultimo, il nome dei fogli è sempre uguale ai valori in colonna G.
Spero di essermi spiegato bene e che ci sia qualcuno in grado di aiutarmi!!
Grazie anticipatamente a tutti!!
Andrea. |
|
| | Post: 548 | Registrato il: 24/06/2015
| Città: CATANIA | Età: 80 | Utente Senior | Excel2019 | | OFFLINE |
|
11/04/2018 17:30 | |
Ciao Andrea
per eliminare i Fogli, con preavviso, puoi usare questa macro (attento a che i nomi dei Fogli da NON eliminare corrispondano esattamente a quanto scritto fra i doppi apici nella macro)
Option Explicit
Option Compare Text
Sub Elimina_Fogli()
Dim i As Long
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Elenco" And Sheets(i).Name <> "Fac-Simile" And Sheets(i).Name <> "Dati" Then
risp = MsgBox("Elimino il file " & Sheets(i).Name & "?", 4 + vbQuestion, "Domanda")
If risp = 6 Then Sheets(i).Delete
End If
Next i
End Sub
Per l'altro problema gradirei qualche chiarimento.
Nei Fogli PIPPO e TOPOLINO le colonne D sono vuote. Ti riferisci, per caso, alla col.D del Foglio Elenco? Ma dove è la corrispondenza tra quanto scritto in col.D di detto Foglio con i Foglio il cui valore è da riportare?
Fai sapere. Ciao,
Mario [Modificato da Marius44 11/04/2018 17:31] |
| | Post: 3.331 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
11/04/2018 17:42 | |
|
| | Post: 26 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
12/04/2018 17:51 | |
Ragazzi che dire...GRAZIE!
@Mario esatto, mi riferivo alla colonna D del foglio Elenco. In colonna D è assegnata una macro che inserisce un flag nella cella soltanto se il foglio è stato creato. (OGNI foglio, ad eccezione di quei tre, è sempre rinominato come le celle in colonna G).
@Raffaele è esattamente ciò che cercavo! come sempre...GRAZIE!
Ho visto che hai utilizzato la formula INDIRETTO con & all'interno(che online è descritta malissimo!)...saresti così gentile da spiegarmi come funziona?
Inoltre ho inserito la seguente macro da inserire in ciascun foglio per cancellare singolarmente il foglio attivo, tuttavia "funziona parzialmente" nel senso che cancella il foglio ma restituisce un errore che, dopo la conferma, blocca tutte le altre macro.
Sapreste dirmi dove ho sbagliato?
Sub EliminaUnFoglio()
Dim NomeFoglio, Risposta
Dim FL As Boolean
Dim WS As Worksheet
NomeFoglio = [F1]
FL = False
For Each WS In Worksheets
If LCase(WS.Name) = LCase(NomeFoglio) Then
FL = True
Risposta = MsgBox("Sicuro di voler eliminare il foglio " & NomeFoglio & "?", vbYesNo, "ATTENZIONE")
If Risposta = vbNo Then Exit Sub
Application.DisplayAlerts = False
Sheets(NomeFoglio).Delete
Application.DisplayAlerts = True
MsgBox "il foglio " & NomeFoglio & " è stao eliminato"
End If
Next
If FL = False Then
MsgBox "il foglio " & NomeFoglio & " non esiste" & vbCr _
& "Impossibile compiere l'operazione"
End If
End Sub
Grazie come sempre!!
|
| | Post: 3.341 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
12/04/2018 18:55 | |
>>>la seguente macro da inserire in ciascun foglio per cancellare singolarmente il foglio attivo
Io avrei messo un bottone in ogni foglio con un codice scritto in un modulo vb Sub Elimina()
ActiveSheet.Delete
End Sub
'casomai
Sub Elimina2()
Application.Displayalert = False
ActiveSheet.Delete
Application.Displayalert = True
End Sub (VBA senza verifiche). Excel 2013 |
| | Post: 27 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
13/04/2018 10:42 | |
Ok così ovviamente funziona ma vorrei far apparire un MsgBox con Yes and No che confermi o meno l'eliminazione di quella scheda (nome scheda SEMPRE in cella C3)e, in caso di risposta affermativa, elimini la scheda e rimanda la visualizzazione al foglio Elenco. Ho provato ma non so perché funziona soltanto la prima volta e dopo va in palla...
Grazie come sempre! |
| | Post: 3.703 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/04/2018 11:06 | |
Ciao watera ed un saluto a Raffaele
Basta aggiungere un MsgBox in questo modo
vb Sub Elimina2()
Dim messaggio
messaggio = MsgBox("Vuoi elininare il foglio?", vbYesNo)
If messaggio = vbYes Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End If
End Sub
@Raffaele
E' DisplayAlerts non DisplayAlert
Alfredo |
| | Post: 3.344 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
13/04/2018 11:15 | |
Ho cambiato la formula in J4 =SE(O(D4="";G4="");"";INDIRETTO(G4&"!H"&35))
Ps INDIRETTO di norma e un testo, pertanto metto nome+colonna tra "..." + & (il numero)
NB. Per quanto abbia capito, secondo me hai bisogno di un MASTER quando crei fogli
Non ho provato, dovrebbe essere...
vb Sub Elimina_Fogli3()
Dim Risp As Integer, Sf As Worksheet
Set Sf = Worksheets(ActiveSheet.Name)
Risp = MsgBox(prompt:="Eliminare il foglio? " & ActiveSheet.Name, Buttons:=vbYesNo)
If Risp = vbYes Then
Application.Displayalert = False
Sf.Delete
Application.Displayalert = True
Else 'se desideri elimina quest riga
MsgBox "foglio non eliminato" 'se desideri elimina quest riga
End If
Set Sf = Nothing
End Sub
Ha ragione alfrimpa(ciao) Displayalerts con s finale (la vecchiaia) [Modificato da raffaele1953 13/04/2018 11:27] Excel 2013 |
| | Post: 3.704 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/04/2018 11:25 | |
raffaele1953, 13/04/2018 11.15:
Ha ragione alfrimpa(ciao) Displayalerts con s finale (la vecchiaia)
Ma hai la mia stessa età.......
[Modificato da alfrimpa 13/04/2018 11:26]
Alfredo |
| | Post: 28 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
13/04/2018 11:57 | |
Ragazzi purtroppo ancora non ci siamo...
Con la macro di alfrimpa mi restituisce il messaggio di errore in allegato
La macro di Raffaele sembra funzionare ma fa crashare Excel!!
Aiutatemi... |
| | Post: 29 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
13/04/2018 11:58 | |
|
| | Post: 3.346 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
13/04/2018 12:27 | |
Dentro Dati/Modifica Collegamento c'è un URA PE.XLS che io non ho...
Il Codice và inserito in un MODULO e il mio (tranne s finale) è OK
Pure quello di alfrimpa è OK
Al massimo per sicurezza puoi aggiungere
If Sf.Name <> "Elenco" And Sf.Name <> "Dati" And Sf.Name <> "Fac-Simile" Then [Modificato da raffaele1953 13/04/2018 12:39] Excel 2013 |
| | Post: 30 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
13/04/2018 17:19 | |
Il problema non è nelle formule bensì nel file...
Ma ormai è troppo carico di dati e non posso perdere gli aggiornamenti apportati.
Non so proprio come risolvere...qualsiasi formula inserisco per eliminare il foglio mi restituisce lo stesso errore (anche la più "semplice" suggerita inizialmente da Raffaele)
|
| | Post: 3.350 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Master | 2013 | | OFFLINE | |
|
13/04/2018 17:27 | |
Ps Nel forum in basso c'+ una chat
Quando mi vedi collegato mandami un msg (se riesco vederlo ti do l'email). Ameno posso verificare l'originale. Excel 2013 |
| | Post: 31 | Registrato il: 26/02/2018
| Città: ROMA | Età: 33 | Utente Junior | Excel 2010 | | OFFLINE | |
|
27/04/2018 10:18 | |
Raffaele purtroppo non sono ancora riuscito a risolvere il problema e non ti ho mai trovato online!
Comunque ho di nuovo bisogno del vostro aiuto!!
Spero stavolta sia possibile...
Ho creato N file ciascuno con il cognome del responsabile che dovrà compilarli e con i fogli all'interno impostati esattamente allo stesso modo, diversi soltanto per numero e nome.
Il nome dei primi due fogli e dell'ultimo è uguale per tutti i file, gli altri file avranno un numero diverso di fogli ma tutti impostati allo stesso modo (esatta corrispondenza tra celle).
L'0biettivo è quello di riportare il contenuto di alcune celle (sempre le stesse) di tutti i file all'interno di un file Excel principale chiamato REPORT.xlsm
Es. nel file ROSSI.xlsm vi sono due fogli, nel file BIANCHI.xlsm vi è soltanto un foglio; all'interno del file REPORT vorrei riportare il contenuto delle celle C13:C30 di ciascun foglio; nella colonna B13:B30 di ciascun foglio vi è un menu a tendina con le stesse voci riportate in colonna nel file REPORT.
Al momento utilizzo un banale CERCA.VERT (vedi allegato) ma ogni volta devo inserire manualmente il nome del file e del foglio!
Magari è possibile scrivere una macro che mi eviti questo lavoro ogni volta...
Spero di essermi spiegato "abbastanza" bene e che qualcuno sia in grado di aiutarmi...
Come sempre grazie infinite a tutti per l'aiuto!!
Andrea. |
|
|