vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest sobota, 18 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

wykres


otwartyotwarty rozpoczął: alicelee postów: 20



napisał: jalamas
postów: 316


umieszczony:
14 lutego 2007
23:17

edytowany:
15 lutego 2007
10:55

  
Patrząc na to co tytaj piszesz zaczynam się zastanawiać czy ten kod w ogóle jest uruchamiany....
Po linii:
CurrentChart.Export Filename:=Fname, FilterName:="GIF"
dopisz:
MsgBox Dir(Fname)

i co widzisz w MsgBox ?
Gdzie masz w tym userform umieszczony ten kod, kiedy go wywołujesz ?
Bo skoro piszesz :
Cytat:
srm_wykres. i tam !!!!!!!!!!! kod mam taki:

to co robi tam !!!! w kodzie klasy frm_wykres (zakładając, że sfrm_wykres w cytacie powyżej to jest frm_wykres):
frm_wykres.Show ?????
napisał: alicelee
postów: 57


umieszczony:
14 lutego 2007
16:35

  
Doinstalowałam i nic :/
zapisalam jako normalny i dalej nic :/
Wykres nazywa sie wykres. Bylo GIF zmienilam na BMP ale tez nie dziala niestety :/
Na frm_221 mam napisane:
Private Sub Cmd_Wykres_Click()
frm_wykres.Show
End Sub


No i po kliknieciu przycisku otwiera sie srm_wykres. i tam kod mam taki:
Sub wykres()
Dim CurrentChart As Chart
Dim Fname As String
      Set CurrentChart = Sheets("2.2.1.").ChartObjects("Wykres").Chart
      Fname = ThisWorkbook.Path & "\temp.bmp"
      CurrentChart.Export Filename:=Fname, FilterName:="BMP"
      frm_wykres.ImageMoj.Picture = LoadPicture(Fname)
      frm_wykres.Show
End Sub

napisał: alicelee
postów: 57


umieszczony:
14 lutego 2007
12:52

  
Ja mam excela 2000. A problem jest taki, że ten plik wcale nie powstaje :/ w szkole mam 97 wiec zapisuje to jako "skoroszyt MsExcel 97-2000 i 5.0/95". A jak moge doinstalować te filtry graficzne? Bo w Narzędzia-> Dodatki tego nie ma.
napisał: alicelee
postów: 57


umieszczony:
13 lutego 2007
21:41

  
Proszę pomóżcie... ja się nie poprawię... bo nie wiem gdzie :/
napisał: alicelee
postów: 57


umieszczony:
12 lutego 2007
19:28

  
Aha no i wykres na arkuszu 2.2.1 jest tylko jeden....
napisał: alicelee
postów: 57


umieszczony:
12 lutego 2007
16:06

  
Jeśli już piszemy o marzeniach to mi się marzy żeby to zadziałało :D
pozdrawiam :D
napisał: jalamas
postów: 316


umieszczony:
12 lutego 2007
09:17

edytowany:
12 lutego 2007
09:22

  
Spoko, to żadna krzywda, uczę, nie w szkole wprawdzie... ale...

A w odniesieniu do mojego marzenia, to po prostu jak mawia moja teściowa:
"Powiedziałabym co mi dyktuje serce, lecz solidarność kobieca mi nie pozwala"...
Mnie nie wypada, Tobie tak
Stąd moja prośba....
Dzięki.
napisał: jalamas
postów: 316


umieszczony:
12 lutego 2007
08:11

  
Jeśli na tym forum można pisać o swoich marzeniach,
to marzy mi się by Artik skomentował ten kod i post z całym swoim "kunsztem", tak jak On zwykł to czynić.
napisał: alicelee
postów: 57


umieszczony:
12 lutego 2007
01:42

  
Ok. To juz wiem ze moj wykres nazywa sie "wykres" bo tak go nazawalam. Wiec napisane jest tak:
Sub wykres()
Dim CurrentChart As Chart
Dim Fname As String
      Set CurrentChart = Sheets("2.2.1.").ChartObjects(wykres).Chart
      Fname = ThisWorkbook.Path & "\temp.gif"
      CurrentChart.Export Filename:=Fname, FilterName:="GIF"
      frm_wykres.ImageMoj.Picture = LoadPicture(Fname)
      frm_wykres.Show
End Sub


i wywala blad Expected Function or Variable

a jak pisze tak:
Set CurrentChart = Sheets("2.2.1.").ChartObjects("Wykres").Chart


to tez jest blad :/ tym razem coś path error i 75 error :/
Co to moze byc? I gdzie ja mam wpisac te slowo "wykres"? :(
napisał: jalamas
postów: 316


umieszczony:
9 lutego 2007
07:29

edytowany:
9 lutego 2007
07:32

  
Wszystkie obiekty mają nazwy.....
Kliknij na dowolną komórkę obok wykresu
Trzymając wciśnięty klawisz CTRL (control), kliknij na wykres
Na rogach powinny się pojawić kółeczka puste
Na górze okienka edycji skoroszytu z lewej strony w polu nazw (tam gdzie zwykle pisze np. A1,
czy inny adres) pojawi się nazwa wykresu.
Tutaj jest obrazek
http://peltiertech.com/Excel/ChartsHowTo/NameAChart.html
w punkcie
Manually - Existing Chart:

W tym też miejscu można ją sobie zmienić (wpisać i Enter).
Patrząc na Twoje posty śmiem przypuszczać, iż masz w tym arkuszu nieco więcej wykresów dodanych za pomocą kodu.
Być może są one 1-den na drugim. Być może ten z indexem 1-den jest pusty ????

Wpisz w module taki kod:
Sub test()
    MsgBox ThisWorkbook.Worksheets("2.2.1.").ChartObjects.Count
End Sub


Uruchom i sprawdź ile ich jest.
----------------
Przez kod klasy UserForm rozumiem kod w okienku opisanym w VBA jako:
[frm_wykres (code)]


Adminie, znowu nudzę, ale jeśli się nie wyłączy buziek, "szkodzą" w znacznikach VBCODE.
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
21:36

  
aha bo ja dopiero sie ucze... i na razie w module i class nie mam nic wpisane, dlatego wszsytko sprawdzam przez F5...
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
21:33

  
Więc jest tak:
Sub wykres()
Dim CurrentChart As Chart
Dim Fname As String
      Set CurrentChart = Sheets("2.2.1.").ChartObjects(1).Chart
      Fname = ThisWorkbook.Path & "\temp.gif"
      CurrentChart.Export Filename:=Fname, FilterName:="GIF"
      frm_wykres.ImageMoj.Picture = LoadPicture(Fname)
      frm_wykres.Show
End Sub


Wszystko to wpisane jest w kod frm_wykres. Na frm_wykres, umiescilam puste ImageMoj. No i F5 i sie uruchamia, ale wykresu nie ma :/

A ten wykres w excelu ma byc jakoś specjalnie opisany? Bo ja mam zwykly wykres, bez zadnych nazw itp.
napisał: jalamas
postów: 316


umieszczony:
8 lutego 2007
18:54

edytowany:
8 lutego 2007
19:10

  
Moim zdaniem aby użyć kontrolki ChartSpace na UserForm, należy wykorzystac SpreedSheet (co już w innym poście pokazałam) bądź przepisac dane do tablicy.
Lecz patrząc na Twoje posty, naprawdę nie wiem jaką w końcu masz koncepcję.
Jeżeli chcesz dodać wykres do arkusza (WorkSheet) to można tak:
Nie należy się sugerwoać długością kodu, bo tu obsługa błedów jest konieczna raczej.
Sub MojWykres(RangeDane As Range, _
              ByVal NazwaWykresu As String, _
              oRangeTopLeft As Range)
Dim oWsh As Worksheet
Dim oChrt As Chart
    Set oWsh = oRangeTopLeft.Parent
    On Error Resume Next
    ' sprawdzamy na wszelki wypadek czy jest na tymarkuszu już wyres o nazwie NazwaWykresu
    oWsh.ChartObjects(NazwaWykresu).Name = NazwaWykresu
    If Err <> 0 Then
        ' znaczy nie ma wykresu o tej nazwie
        On Error GoTo MojWykre_Error
        ' dodajemy go do skoroszytu w ktorym jest ten nasz arkusz (Parent)
        Set oChrt = oWsh.Parent.Charts.Add
        With oChrt
            .SetSourceData Source:=RangeDane, PlotBy:=xlColumns
            .ChartType = xl3DPie
            .Location Where:=xlLocationAsObject, Name:=oRangeTopLeft.Parent.Name
        End With
        ' dodalismy go przed chwila, wiec jest ostatni Count !
        ' nadajemy mu nasza nazwe by potem go identyfikować + polozenie
        With oWsh
            With .ChartObjects(.ChartObjects.Count)
                .Name = NazwaWykresu
                .Left = oRangeTopLeft.Left
                .Top = oRangeTopLeft.Top
            End With
        End With
    Else
        On Error GoTo MojWykre_Error
        ' znaczy jest wykresu o tej nazwie tylko zakers danych zmieniamy
        oWsh.ChartObjects(NazwaWykresu).Chart.SetSourceData Source:=RangeDane, _
                                                            PlotBy:=xlColumns
    End If

MojWykre_Exit:
    On Error Resume Next
    Set oChrt = Nothing
    Set oWsh = Nothing
    Exit Sub
MojWykre_Error:
    MsgBox "Błąd - " & Err.Number & vbCrLf & _
           "Opis - " & Err.Description & vbCrLf & _
           "Procedura - " & "MojWykre", vbExclamation
    Resume MojWykre_Exit
End Sub

wywołujemy tak:
Call MojWykres(RangeDane:=ThisWorkbook.Worksheets("2.2.1.").Range("D4 :E9"), _
                   NazwaWykresu:="moj_wykres", _
                   oRangeTopLeft:=ThisWorkbook.Worksheets("2.2.1.").Range("F10"))

albo na przykład tak:
Sub Inaczej(RangeDane As Range, _
            ByVal NazwaWykresu As String, _
            oRangeTopLeft As Range)
Dim oWsh As Worksheet
Dim oChrt As ChartObject  '!!!!!!!!!!!
    Set oWsh = oRangeTopLeft.Parent
    On Error Resume Next
    ' sprawdzamy na wszelki wypadek czy jest na tymarkuszu już wyres o nazwie NazwaWykresu
    Set oChrt = oWsh.ChartObjects(NazwaWykresu)
    If Err <> 0 Then
        ' znaczy nie ma wykresu o tej nazwie
        On Error GoTo Inacz_Error
        ' dodajemy go arkusza
        Set oChrt = oWsh.ChartObjects.Add(oRangeTopLeft.Left, _
                                          oRangeTopLeft.Top, 300, 200)
        With oChrt
            .Chart.SetSourceData Source:=RangeDane, PlotBy:=xlColumns
            .Chart.ChartType = xl3DPie
            .Name = NazwaWykresu
        End With
    Else
        On Error GoTo Inacz_Error
        ' jeśli wykres taki już istnieje wystarczy zmiana zakresu
        With oChrt
            .Chart.SetSourceData Source:=RangeDane, PlotBy:=xlColumns
            .Chart.ChartType = xl3DPie
        End With
    End If

Inacz_Exit:
    On Error Resume Next
    Set oChrt = Nothing
    Set oWsh = Nothing
    Exit Sub
Inacz_Error:
    MsgBox "Błąd - " & Err.Number & vbCrLf & _
           "Opis - " & Err.Description & vbCrLf & _
           "Procedura - " & "Inacz", vbExclamation
    Resume Inacz_Exit
End Sub

wywołujemy tak:
Call Inaczej(RangeDane:=ThisWorkbook.Worksheets("2.2.1.").Range("D4 :E9"), _
                          NazwaWykresu:="moj_drugiwykres", _
                          oRangeTopLeft:=ThisWorkbook.Worksheets("2.2.1.").Range("F20"))


Jeżli chcesz skopiować obraz wykresu z arkusza to na przykład w module możesz napisać tak:
Sub CopiujNaImageUserform(oImg As MSForms.Image, _
                          ByVal NazwaWykresu As String, _
                          Wsh As Worksheet)
    On Error GoTo CopiuNaImageUserf_Error
    Dim strSciezkaNazawPliku As String
    strSciezkaNazawPliku = ThisWorkbook.Path & "\tmp.gif"
    Call UsunPlik(strSciezkaNazawPliku)
    On Error Resume Next
    Dim oChrt As Chart
    Set oChrt = Wsh.ChartObjects(NazwaWykresu).Chart
    If Err = 0 Then
        oChrt.Export Filename:=strSciezkaNazawPliku, FilterName:="GIF"
        oImg.Picture = LoadPicture(strSciezkaNazawPliku)
    Else
        MsgBox "Brak wykresu o nazwie " & NazwaWykresu
    End If

CopiuNaImageUserf_Exit:
    On Error Resume Next
    Exit Sub
CopiuNaImageUserf_Error:
    MsgBox "Błąd - " & Err.Number & vbCrLf & _
           "Opis - " & Err.Description & vbCrLf & _
           "Procedura - " & "CopiuNaImageUserf", vbExclamation
    Resume CopiuNaImageUserf_Exit
End Sub

Sub UsunPlik(ByVal sSciezkaPlik As String)
    On Error Resume Next
    Kill sSciezkaPlik
End Sub

W kodzie klasy !!!! UserForm wywołujemy tak:
Sub test()
Call CopiujNaImageUserform(Me.ImageMoj, _
                          NazwaWykresu:="moj_wykres", _
                          Wsh:=ThisWorkbook.Worksheets("2.2.1."))
                          Me.ImageMoj.AutoSize = True
End Sub

gdzie Me.ImageMoj jest Twoją kotrolką Image.

A skoro Ty masz pusty Image to na bank masz wyłączoną obsługę błędów i nie widzisz gdzieś błedu oraz zapewne nie masz option Explict i nie kompilujsz kodu.
Bo to:
Sub wykres()
Dim CurrentChart As Chart
Dim Fname As String
     Set CurrentChart = Sheets("2.2.1.").ChartObjects(1).Chart
     Fname = ThisWorkbook.Path & "\temp.gif"
     CurrentChart.Export Filename:=Fname, FilterName:="GIF"
     frm_wykres.ImageMoj.Picture = LoadPicture(Fname)
     frm_wykres.Show
End Sub


u mnie działa, aczkolwiek ...Kill itd........ i nie wiem co robi F5.... może załóż sobie BreakPoint i zobacz czy wchodzisz do porcedury...
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
14:20

  
Proszę pomóżcie... czemu to nie działa? :|
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
00:23

  
albo jeszcze inaczej:

narysowal sie wykres w arkuszu 2.2.1 wiec chce go wkleic:

Sub wykres()
 
    Set CurrentChart = Sheets("2.2.1.").ChartObjects(1).Chart
    Fname = ThisWorkbook.Path & "\temp.gif"
    CurrentChart.Export Filename:=Fname, FilterName:="GIF"

    frm_wykres.Image1.Picture = LoadPicture(Fname)

    frm_wykres.Show


End Sub


i wciskam F5 i nic :/ pusty Image1 :/
napisał: alicelee
postów: 57


umieszczony:
8 lutego 2007
00:16

  
Co ja pisze!
CHART wstawilam a nie spreedsheet ;)
napisał: alicelee
postów: 57


umieszczony:
7 lutego 2007
23:38

  
Witam :)
Mam taki problem. W excelu w arkuszu 2.2.1. w komórkach od D4:D9 i E4:E9 mam dane ktore chcialbym umiescic na wykresie. W VBa na frm_221 utworzylam spreedsheet i napisalam cos takiego. Co mam zrobic, zeby na podstawie danych z excela wykreslalo mi wykres? Prosze o pomoc :)

Sub Wykresik()
   Dim Wykres As Chart
   Dim Wykres1 As ChartObject
   Dim Wks As Worksheet
  
     Set Wks = Sheets("2.2.1.")
     Set Wykres = Chart1.Add
     With Wykres
       .ChartType = xl3DPie
       .SetSourceData Source:=Wks.Range("D4:D9"), PlotBy _
           :=xlColumns
       .Location Where:=xlLocationAsObject, Name:=Wks.Name
     End With
     Set Wykres1 = Wks.ChartObjects(1)
End Sub



<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z