Inserare Chart in Userform

zvonacfirst
Mesaje: 85
Membru din: Mie Feb 19, 2014 10:41 pm

Inserare Chart in Userform

Mesaj de zvonacfirst » Mar Noi 07, 2017 10:59 pm

Buna.

Nu reusesc sa dau de cap unei probleme si va rog mult de tot sa ma ajutati.
Am un usrform multipage cu 4 pagini si pe fiecare pagina vreau sa aduc un chart din Sheet1. Este posibil ca numarul de pagini sa creasca si toate vor avea un chart.
Totul functioneaza bine pana la salvarea si redeschiderea fisierului cand imi da eroare la una dintre pagini la linia:

Cod: Selectaţi tot

Me.Image4.Picture = LoadPicture(Fname)
Codul utilizat este urmatorul:

Cod: Selectaţi tot

Option Explicit
 Dim Fname As String
 Dim MyChart As Chart

Private Sub CommandButton1_Click()

    Set MyChart = Sheets("Sheet1").ChartObjects(1).Chart
    Fname = ThisWorkbook.Path & "\temp1.gif"
    MyChart.Export Filename:=Fname, FilterName:="GIF"
    Me.Image1.Picture = LoadPicture(Fname)
    
End Sub

Private Sub CommandButton2_Click()

    Set MyChart = Sheets("Sheet1").ChartObjects(2).Chart
    Fname = ThisWorkbook.Path & "\temp1.gif"
    MyChart.Export Filename:=Fname, FilterName:="GIF"
    Me.Image2.Picture = LoadPicture(Fname)
    
End Sub

Private Sub CommandButton3_Click()

    Set MyChart = Sheets("Sheet1").ChartObjects(3).Chart
    Fname = ThisWorkbook.Path & "\temp1.gif"
    MyChart.Export Filename:=Fname, FilterName:="GIF"
    Me.Image3.Picture = LoadPicture(Fname)
    
End Sub

Private Sub CommandButton4_Click()

    Set MyChart = Sheets("Sheet1").ChartObjects(4).Chart
    Fname = ThisWorkbook.Path & "\temp1.gif"
    MyChart.Export Filename:=Fname, FilterName:="GIF"
    Me.Image4.Picture = LoadPicture(Fname)
    
End Sub

Private Sub CommandButton5_Click()
With ThisWorkbook
.Save
.Close
End With
End Sub
Am pregatit un fisper pentru exemplificare.
Multumesc.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Nills
Mesaje: 211
Membru din: Sâm Ian 23, 2016 11:24 am

Re: Inserare Chart in Userform

Mesaj de Nills » Mie Noi 08, 2017 1:47 pm

Exista vreun motiv special pentru care vrei pagini multiple in UserForm?
Sau poti crea un combobox in UserForm in care sa ai numele graficelor si acestea sa fie redate. pe rand, intr-un Image box.
I don't care what you think of me! Unless you think I'm awesome – in which case, you're right! Carry on :D

zvonacfirst
Mesaje: 85
Membru din: Mie Feb 19, 2014 10:41 pm

Re: Inserare Chart in Userform

Mesaj de zvonacfirst » Joi Noi 09, 2017 11:13 am

Motivul pentru multipage este ca organizez un eveniment la care participa managerii din grupul de companii unde lucrez si paginile fiecarei companii se deschide cu un singur click.
Este vorba de o autoevaluare ale carei rezultate se vad in charturile integrate in userform iar rezultatele pot fi comparate clickuind paginile userformului. Am si o pagina centralizatoare.

Dar am rezolvat problema punand cate o copie a fiecarui chart intr-un alt sheet si le accesez de acolo. Asa functioneaza. Preferam sa am totul intr-un singur sheet din comoditate, aveam la sub ochi toate datele in timp ce lucram.
Oricum este de studiat si prima situatie. La un moment dat apare un conflict si nu-mi dau seama ce il genereaza.

TudyBTH
Moderator
Moderator
Mesaje: 905
Membru din: Joi Feb 11, 2016 2:12 pm
Localitate: Cluj Napoca

Re: Inserare Chart in Userform

Mesaj de TudyBTH » Dum Noi 12, 2017 1:29 am

Buna,
Un chart in userform este de fapt o imagine a chart-ului din sheet, de obicei se foloseste doar ca previzualizare.
Nu se vede nimic "suspect" in instructiunea care va da eroare, posibil sa fie de vina adresarea (incarcarea variabilei Fname cu o valoare aiurea, folositi Imediate window pentru a verifica in timpul executiei, mie nu imi da nici o eroare).
Sincer eu nu as alege aceasta varianta. Va puteti "plimba" prin sheet-uri cu niste banale link-uri si veti putea astfel afisa obiectele reale nu imaginea lor. Nu va impiedeca nimeni si nimic sa creati un dashboard, o foaie cu un "cuprins" al tuturor diagramelor. Dupa parerea mea, VBA ar trebui folosit doar atunci cand obiectivele depasesc posibilitatea Excel-ului pentru ca VBA este, totusi, un mediu strain si nu este complet adaptat la aplicatia Excel. Adica, cele doua interactioneaza si este bine ca doar unul dintre ele sa detina control asupra fluxului ce controleaza evenimentele. Daca scopul este doar cel descris in mesaj, eu zic sa renuntati la VBA.
Am invatat sa inotam in apa, ca pestii
Am invatat sa zburam in aer, ca pasarile
A ramas doar sa invatam sa traim pe Pamant, ca Oamenii.

zvonacfirst
Mesaje: 85
Membru din: Mie Feb 19, 2014 10:41 pm

Re: Inserare Chart in Userform

Mesaj de zvonacfirst » Joi Noi 23, 2017 2:26 pm

Scuze pentru raspunsul intarziat.
Multumesc pentru sugestii.

Dupa eveminentul pe care l-am organizat mi-am luat niste zile de CO pentru a ma reface. ;)

Referitor la abordarea problemei, am facut alegrea stabilind ca si criteriu aspectul. Userformul este mai de efect decat un sheet oricat de formatat ar fi el. Sau asa consider eu la nivelul la care stiu Excel si VBA.

Fiecare business Unit, cu reprezentantii sai - intre 2 si 5 persoane, avea o pagina in userform unde pentru fiecare persoana au fost introduce rezultatele numerice ale unor autoevaluari date de un scoring sheet.
Un buton trimitea rezultatele intr-un sheet si intorcea niste indicatori calculati pe baza unor formule si graficul pe baza caruia se dezvolta un workshop de discutii.
Un simplu sheet excel ar fi fost prea banal, am avut perticipanti din mai multe tari si tuturor le-a placut foarte tare abordarea.

Scrie răspuns

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”