Da excel a vb



  • 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