› Sviluppare funzionalita su Microsoft Office con VBA › generare BarCode
-
AutoreArticoli
-
Buonasera a tutti!
ho un problemino che vorrei sottoporvi, per poter trovare una soluzione grazie al vostro prezioso aiuto. Ho creato un file, dove inserisco in una cella un numero (cella B5) (il codice chiaramente l'ho trovato in internet e l'ho adeguato alle mie esigenze). quando si esegue l'invio, crea 5 codici a barre uguali uno sotto l'altro.
Il problema nasce ora: se io scrivo nuovamente un altro numero nella cella B5, non mi cancella il codice a barre precedentemente creato e crea quello nuovo, ma lo sovrascrive a quello vecchio. alla fine si hanno un ammasso di linee uno sopra l'altro e il codice chiaramente non è più utilizzabile. Cioè dovrebbe cancellare quello precedentemente creato, e scrivere il nuovo codice.
come posso fare? cè una parte del codice che devo modificare o aggiungere qualcosa? soprattutto come e cosa devo scrivere?
vi allego un esempio.
spero che qualcuno saprà darmi una soluzione, vi ringrazio anticipatamente!
saluti
MarcoAllegati:
You must be logged in to view attached files.I codici generati sono un'insieme di figure (shapes). Ti basterà selezionare tutte quelle del foglio attivo ed eliminarle prima di chiamare la funzione che genera il nuovo barcode.
come e cosa devo scrivere?
C'è un metodo dell'insieme Shapes che fa al caso tuo, che seleziona immediatamente e senza errori tutte le figure del foglio attivo. Poi, su tale selezione, invochi la funzione di cancellazione.
Il "dove" eseguire l'operazione: io lo farei nell'evento che intercetta la modifica della cella B5 , poco prima di scatenare la macro che genera il barcode.
ciao
VF ( che saluto ) ti a dato un indizio, io ti propongo un altro indizio tramite Help di VBA
scrivi la parola ( Shapes ) nel modulo del foglio e seleziona questa, dopo fai F1 e ti si aprira' una finestra
con 2 scelte , usa la prima con oggetto,
al primo esempio prova a leggerti tuto e trovarai la soluzione di come impostare la selezione
comunque dopo aver letto ai ancora problemi cercheremo di dirti come inserire questa senza essere rimproverati da VF
ciao ciao
fai sapere e posta la soluzione che ai trovato
Ciao a tutti,
vi ringrazio molto per i vostri preziosi consigli. ci provo e vi faccio sapere!
saluti e a presto
Marco
senza essere rimproverati da VF
ma che figura da cattivone ci faccio?
Modifica l'evento change cosi,prova e fai sapere
Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False If Not Intersect(Target, Range("b5")) Is Nothing Then Set wsh = Application.ActiveSheet With wsh.Shapes For h = .Count To 1 Step -1 With .Item(h) If Left(.Name, 3) = "Con" Then .Delete End If End With Next End With Call Barre128_S End If Application.ScreenUpdating = True End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )ciao
come detto in precedenza se usiamo l'help di VBA riguardante ( Shapes ) troviamo la soluzione al problema , questo e' quello che troviamo su help excel 2007 in italiano
--------------
Esempio Utilizzare la proprietà Shapes per restituire l'insieme Shapes. Nell'esempio seguente vengono selezionate tutte le forme di myDocument.
Se si desidera eseguire un'operazione (quale l'eliminazione o l'impostazione di una proprietà) contemporaneamente su tutte le forme di un foglio, selezionare tutte le forme e utilizzare la proprietà ShapeRange sulla selezione per creare un oggetto ShapeRange contenente tutte le forme del foglio, quindi applicare all'oggetto ShapeRange la proprietà o il metodo appropriato.
Visual Basic, Application Edition
Set myDocument = Worksheets(1)
myDocument.Shapes.SelectAllquindi qui dice di dichiarare il foglio di cui lavorare, ma nel nostro caso non serve in quanto siamo gia nel foglio di lavoro quindi modifichiamo la selezione con
ActiveSheet.Shapes.SelectAll
e a questo punto possiamo cancellare tutte le Shapes assieme in quanto sono state selezionate e attivate
Selection.Delete
quindi il tutto si traduce su due semplici righe
spero di essermi spiegato
ciao ciao
-
AutoreArticoli
