Pulire foglio preservando i tasti
Hai un problema con Excel? 
Pulire foglio preservando i tasti
di Max (utente non iscritto) data: 30/08/2012 14:54:17
Ciao a tutti,
ho un problema con una macro:
All'interno di un foglio excel ho 2 pulsanti. Il primo chiama una macro che attraverso dei valori da me inseriti, traccia delle linee orientate (AddLine...) e aggiunge una textbox con il risultato di un calcolo...fin qui nessun problema. Il secondo tasto deve ripulire l'intero foglio e formattarlo senza bordi. Voglio evitare istruzioni tipo "range("A1:X500").delete". Nella sub sotto ho riportato anche le "varianti" precedute con ('). Come attualmente sotto, pulisce e formatta il foglio ma non elimina nè le linee nè la textbox. Se utilizzo Cells.Delete anzichè Cells.Clear cancella tutto compreso i due bottoni (che invece voglio mantenere). Ho provato anche ad aggiungere questa istruzione trovata in rete (che non comprendo completamente) ma mi elimina le linee una alla volta ad ogni chiamata della macro e alla fine la text box.
ActiveSheet.Shapes(ActiveSheet.Shapes(Lines).Name).Delete
Forse potrei utilizzarla in un ciclo ma non so come "maneggiarla"
Potete aiutarmi? Spero di essermi spiegato chiaramente.
Grazie mille
Sub ripdiag()
Sheets("Foglio1").Select
With Selection
Cells.Clear
' Cells.Delete
End With
Sheets("Foglio1").Select
Cells.Select
With Selection.Interior
.ColorIndex = 2
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub |
di Vecchio Frac data: 30/08/2012 16:11:36
Secondo me quell'istruzione non fa niente di utile :)
Per quanto riguarda il ciclare tra le forme e identificare una Linea, puoi utilizzare un ciclo simile a quello che ti allego.
E' inoltre dispendioso (in termini di tempo ed efficienza) cancellare il foglio come fai tu, identifica le celle che vuoi ripulire e usa solo quel range:
[a1:z100].Clear (questo cancella tutto, valori e formattazione)
For Each shp In ActiveSheet.Shapes
If shp.Type = msoLine Then shp.Delete
Next |
di HarryBosch data: 30/08/2012 16:12:53
Ciao Max
vuoi dirmi che un semplice codice (vedi sotto) non è sufficiente?
se ti trovi già sul foglio da "pulire" e vuoi eliminare contenuti + formattazione basta una istruzione...
che versione hai di Excel? non dovrebbe cancellare i controlli... perlomeno a me non li cancella (excel 2007 - 2010)
Vanni
Sub ripdiag()
Cells.Clear
End Sub
|
di HarryBosch data: 30/08/2012 16:14:38
ho letto male...
mea culpa
di Max (utente non iscritto) data: 30/08/2012 16:40:27
Grazie Vecchio Frac.
In effetti formattare un intero foglio è dispendioso ma poichè il resto del programmino è molto semplice, non ci sono problemi. Tuttavia tengo buono il tuo giusto consiglio.
Grazie mille per il ciclo. Molto elegante. Ho inserito un'ulteriore istruzione (vedi sotto) anche per la textbox poichè non veniva cancellata. Funziona perfettamente.
Grazie ancora.
Con l'occasione posso chiederti se ti è chiara la riga:
ActiveSheet.Shapes(ActiveSheet.Shapes(Lines).Name).Delete
perchè è inserito ActiveSheet.Shapes(Line).Name all'interno di un ulteriore ActiveSheet.Shapes???
ho cercato in giro ma proprio non trovo risposta
' elimino tutte le linee
For Each shp In ActiveSheet.Shapes
If shp.Type = msoLine Then shp.Delete
'If shp.Type = msoTextBox Then shp.Delete
Next
'elimino la/le text box
For Each shp2 In ActiveSheet.Shapes
If shp2.Type = msoTextBox Then shp2.Delete
Next |
di Vecchio Frac data: 30/08/2012 19:14:31
Infatti come intuisci non ha senso in questo contesto, è scritta male, probabilmente volevano riferirsi alle linee attraverso il loro nome :)
Inoltre attenzione che se la TextBox non è un controllo inserito via barra strumenti "Moduli" ma via barra strumenti "Strumenti di controllo", allora il type del controllo non msoTextBox bensì msoOLEControlObject. In questo caso però ti spazza via anche eventuali command button inseriti nello stesso modo... se devi eliminare un'unica textbox presente fallo riferendoti al suo nome.
For Each shp In ActiveSheet.Shapes
If shp.Type = msoLine Or shp.Name = "TextBox1" Then shp.Delete
Next |
di Max (utente non iscritto) data: 31/08/2012 08:31:17
Nuovamente grazie Vecchio Frac. Proverò i tuoi suggerimenti come esercizio... male non mi farà!
Sei un grande!!!
di Vecchio Frac data: 31/08/2012 08:57:36
Piano con gli epiteti :)
Non sono molto alto, grande ma solo di età ;)
Per fortuna c'è Vanni che abbassa la media ed è più fresco di me :D
Vuoi Approfondire?