Da excel a vb
Hai un problema con Excel? 
Da excel a vb
di Derekforeal (utente non iscritto) data: 09/02/2011
Ciao a tutti, e complimenti per il furom. non è la prima volta che scrivo qui e spero possiate aiutarmi come avete sempre fatto.
ho la necessità di vedere su visual basic la stringa della formattazione di una cella.
es:
- la cella "a1" è grassetta con sfondo rosso e testo nero. su visual basic vorrei ritrovarmi la formula della formattazione di "a1" per fare la cella "a2" uguale, il tutto ovviamente senza usare il copia formato.
io ho provato a fare un registra macro e "costruirmi" la formattazione della cella per poi andare in vb per vedermi i codici (come faccio sempre quando non so la stringa di un comando), ma le celle formattate in modo diverso sono troppe.
spero di essere stato chiaro.
saluti a tutti
di Mik (utente non iscritto) data: 09/02/2011
Ciao,
è un ottimo modo di apprendere usando le registrazioni macro per poi visionare il codice svuluppatosi per una determinata operazione
in questo caso ti do un consiglio...
ripeti nuovamente la registrazione e questa volta prova a fare con il mouse:
tasto destro, copia (nella cella origine) e poi spostati nella cella(o range selezionato) e scegli "incolla speciale" specificando solo "formato"...ottieni esattamente quello che vuoi fare tu....
poi studiati il codice generato dalla macro così lo applichi da e dove vuoi tramite il tuo codice personale:
Incolla valori
di Derekforeal (utente non iscritto) data: 09/02/2011
Ho provato a fare come mi hai detto ma la stringa che mi genera è questa:
selection.pastespecial paste:=xlpasteformats, operation:=xlnone, _
skipblanks:=false, transpose:=false
cioè quella per incollare il formato da una cella all'altra.
io invece vorrei creare una cella con sfondo giallo, grassettata e con bordi su tutti e quattro i lati e il codice è questo:
selection.borders(xldiagonaldown).linestyle = xlnone
selection.borders(xldiagonalup).linestyle = xlnone
with selection.borders(xledgeleft)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
end with
with selection.borders(xledgetop)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
end with
with selection.borders(xledgebottom)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
end with
with selection.borders(xledgeright)
.linestyle = xlcontinuous
.weight = xlthin
.colorindex = xlautomatic
end with
with selection.interior
.colorindex = 6
.pattern = xlsolid
end with
selection.font.bold = true
e devo "estrapolarlo" da una cella già formattata come serve a me.
di Mik (utente non iscritto) data: 09/02/2011
Non capisco...vuoi estrapolare la formattazione di una cella per fartene cosa...
io so solo così:
range("a1").copy
e poi incolli con quella funzione che ti sei ricavato con la macro es.: nella cella a3
range("a3").pastespecial ...bla bla bla...
altro non saprei
ciao
di Derekforeal (utente non iscritto) data: 09/02/2011
Siccome io parto da un file excel nuovo (quindi non c'è niente), dopo che ho compilato il tutto, voglio che la macro mi formatti le cella in una data maniera (questi file devono essere tutti uguali in quanto a formattazione). per farlo quindi non posso con l'incolla valori perchè nel mio file non ci sono celle formattate come voglio, ma solo "grezze". essendo, le celle, formattate in maniere differente (a1 --> sfondo giallo, minuscolo ; a2 --> sfondo rosso, maiuscolo....tutte diverse), invece di farlo a mano con il registra macro e vedere che codici devo usare volevo fare il contrario, dalla cella già formatta di un'altro file vedere che codici usava excel per formattarla in quella maniera, così da incollare nella mia macro la stringa che genera quella formattazione.
più che provo e più che credo non si possa fare.
di Mik (utente non iscritto) data: 09/02/2011
Bhe che non si possa raggiungere l'obbiettivo non son daccordo...io stesso lavoro totalmente con macro che creano fogli nuovi e li popolano asseconda di come voglio io...tabelle, formattazioni, campi, testo impaginato e tutto quello che si vuol creare..
se una cosa non posso farla in una maniera ne esistono tante altre che ti portano allo stesso obbiettivo, e siamo noi a crearcele se non esiste una determinata cosa che il programma non offre (o meglio non conosciamo)...
nel tuo caso..se devi crearti nuovi fogli e magari questi nuovi fogli hanno in comune molte cose (e ricostruirle da zero sarebbe molto lunga), allora è cosuetudine creare inizialmente (a manina) un file modello base (salvarto su disco), e passarlo come "modello base" ogni volta che si crea un nuovo file..
oppure inventare una macro che quando chiamata, genera una formattazione preimpostata da te e verso una determinata cella che passerai come parametro a questa macro...bhe di cose se ne possono fare tante, bisogna capire bene quel'è quella più utile a se stessi.
poi..ho visto dal codice postato, si può accorciare il cosice relativa la parte della creazione del bordo con :
range("a1").aroundbords(bla bla bla) ora non ricordo i parametri, la guida può aiutarti meglio..
ciao
Vuoi Approfondire?