Grafico e Useform



  • Grafico e Useform
    di Francesco (utente non iscritto) data: 22/10/2012 14:50:37

    Secondo voi è possibile inserire un grafico all'interno di un userform?
    (vorrei creare una finestra che riporti una serie di dati - tale finestra serve a riassumere il lavoro. Facendo ricerche in rete sono riuscito a creare userform e di riportare i valori)

    Seconda domanda è possibile inserire oltre al classico tasto chiudi anche un tasto per ridurre a icona?






  • di Vecchio Frac data: 22/10/2012 15:22:25

    Risposta alla prima domanda:
    sto cercando una risposta in rete :)

    Risposta alla seconda domanda:
    Di suo il VBA tratta le form come oggetti molto particolari, diversi dalle normali finestre di Windows. In sostanza le userform sono come controlli, al pari di labels e commandbuttons.
    Fare quello che chiedi è possibile, ma occorre un sacco di codice aggiuntivo, un modulo di classe e un pesante ricorso alle API di sistema. Se non è proprio una cosa indispensabile, non è facilmente implementabile nei propri progetti. L'effetto è carino, bisogna vedere se ne vale la pena (il codice da tenere controllato non è poco). Inoltre sono quasi convinto che un file Excel progettato così non gira su Linux nè su Mac e quindi non è portabile.





  • di Francesco (utente non iscritto) data: 22/10/2012 15:28:13

    per la seconda domanda: ero solo curioso e non è indispensabile



  • di Vecchio Frac data: 22/10/2012 15:33:21

    Un'idea potrebbe essere quella di creare un grafico, salvarlo in gif e quindi caricare l'immagine nel form.

    Crea il tuo grafico o grafici, come al solito.
    Inserisci un form e quindi aggiungi un controllo Image.
    Scrivi il codice VBA per salvare il grafico come file GIF, e quindi imposta la proprietà Picture del controllo Image al file GIF. È necessario utilizzare la funzione LoadPicture per fare questo.

    Da codice per creare un file GIF (temp.gif) da un grafico (primo oggetto "grafico1" di foglio1).

    Set CurrentChart = Sheets("Sheet1").ChartObjects(1).Chart
    Fname = ThisWorkbook.Path & " emp.gif"
    CurrentChart.Export FileName:=Fname, FilterName:="GIF"

    E poi pe rimpostare Image1 che è il controllo immagine sul form basta fare:
    Image1.Picture = LoadPicture(Fname)





  • di Vecchio Frac data: 22/10/2012 15:39:00

    E' talmente carina questa idea che l'ho implementata in breve tempo e la allego qui :o)





  • di Francesco (utente non iscritto) data: 22/10/2012 15:48:14

    lo avevo letto anche io ma ero molto distante dal realizzarlo.
    grande però !! è esattamente quello che volevo!! ^_^
    Che dici mettiamo il "risolto" o aspettiamo che anche altri utenti vedano questa idea che ti ha conquistato? :-D



  • di Vecchio Frac data: 22/10/2012 16:23:00

    LOL,
    risolviamola pure. Comunque rimane visibile, trovabile e anche nello storico.
    E sì, l'idea mi piace parecchio e penso che troverò il modo di ficcarla nel mio blog :)
    Però perché dici che non eri riuscito a copiare l'idea?
    Se guardi bene le righe di codice sono davvero minime.
    Il grosso del lavoro era realizzare i tre grafichetti (che tra parentesi si possono ampliare, anche a torta etc.).





  • di Francesco (utente non iscritto) data: 22/10/2012 16:47:24

    "lo avevo letto anche io ma ero molto distante dal realizzarlo. " nel senso che per il momento sto perfezzionado altri fremmenti di codice e che il grafico è l'ultima cosa che avrei realizzato. ^_^
    (ieri ho
    - sistemado errore nelle doppie - prezioso tuo consiglio di usare trim
    - riscritto codice somme parziali e totali
    - sistemato foglio nota accredito
    ora devo definire il il match con 3 poi se tutto funziona aggiungere delle colonne , non so ancora quante ed addattare il codice ai nuovi range.
    Poi finalmente graficoooooooooo ^_^ )



  • di HarryBosch data: 22/10/2012 23:01:55

    Veramente carino questo allegato! Non mi era mai passata per la testa l'idea di inserire un grafico in una userform.
    Bravi, bella idea e bell'esempio.



  • di Francesco (utente non iscritto) data: 23/10/2012 16:43:50

    Cavolo anche i complimenti di Harry sono commosso

    lol