Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Grafik Soruları
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Grafik Soruları Grafik uygulamaları ile ilgili sorularınızı bu başlığa yöneltebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 12-02-2009, 08:44   #1
nerodale@yahoo.com
 
Giriş: 11/02/2009
Şehir: istanbul
Mesaj: 11
Excel Vers. ve Dili:
excel 2003 ingilizce
Varsayılan Grafik üzerine açıklama ekleme

Arkadaşlar merhaba,

Ben ekteki gibi bir grafik oluşturdum. Ve grafikte bir serinin üzerine gelindiğinde grafiğin üst kısmında oluşturduğum metin kutusunun içine başka bir alanda oluşturduğum metinlerin gelmesini istiyorum. Örneğin, eylül ayının 2008 verimlilik değerinin üstüne gelip 1 sn beklersem mouse ile grafiğin üstündeki metin kutusunda "Yeni açılan mağaza etkisi" yada "Kadro değişimi" gibi başka bir alanda oluşturduğum metinler gözüksün.. Normalde hücrelere comment eklemenin grafik üzerindeki değerlere uygulanması gibi bişey.

Bu şekilde bir kod oluşturulabilir mi? Yardımlarınız için şimdiden teşekkür ederim.
Eklenmiş Dosyalar
Dosya Türü: xls Book1.xls (48.5 KB, 54 Görüntülenme)
nerodale@yahoo.com Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-02-2009, 11:56   #2
nerodale@yahoo.com
 
Giriş: 11/02/2009
Şehir: istanbul
Mesaj: 11
Excel Vers. ve Dili:
excel 2003 ingilizce
Varsayılan

Arkadaşlar makro yerine alternatif bi çözüm falan önerebilecek kimse yok mu??
nerodale@yahoo.com Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-02-2009, 16:37   #3
Ferhat Pazarçevirdi
 
Ferhat Pazarçevirdi kullanıcısının avatarı
 
Giriş: 15/06/2006
Şehir: İzmir
Mesaj: 3,723
Excel Vers. ve Dili:
Excel 2003, 2007, 2010 (TR)
Varsayılan

Ekteki örnek dosyayı inceleyiniz.

Mouse imleci, açıklama barındıran bir aya ve yıla gelirse, üst taraftaki text kutusuna, daha önceden girdiğiniz not yazdırılır.

Bu olayın gerçekleşmesi için, grafiğin önceden aktif hale getirilmesi (seçilmesi) gereklidir.

Sayfa üzerine gömülmüş grafik nesneleri normal olarak Mouse_Move olayını desteklemez. Bunun için; bir class module kullanılarak, dosya açılışında, istenen grafik nesnesinin eskizi çıkarılmış ve olay bağlantısı yapılmıştır.

Class Module İsmi : Grafik_Olaylari

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
 
Public WithEvents ChartObject As Chart
Dim lEski_a As Long
Dim lEski_b As Long
Private Sub ChartObject_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
    
    Dim IDNum As Long
    Dim VeriNoktasi As Point
    Dim rng As Range
    Dim i As Long
    Dim a As Long
    Dim b As Long
    
    ChartObject.GetChartElement x, y, IDNum, a, b
    
    If lEski_a = a And lEski_b = b Then Exit Sub
    
    If IDNum = xlSeries Then
        
        Set VeriNoktasi = ChartObject.SeriesCollection(a).Points(b)
        
        If Range("A65536").End(xlUp).Row >= 22 Then
            
            For i = 22 To Range("A65536").End(xlUp).Row
                
                If CStr(Range("A" & i)) = VeriNoktasi.Parent.Name _
                    And _
                        CStr(Range("B" & i)) = WorksheetFunction.Index(ChartObject.SeriesCollection(a).XValues, b) Then
                    
                    ChartObject.Shapes("Text Box 1").TextFrame.Characters.Text = Range("C" & i)
                    
                    Exit Sub
                End If
            
            Next i
        Else
            
            ChartObject.Shapes("Text Box 1").TextFrame.Characters.Text = ""
        
        End If
    
    Else
        
        ChartObject.Shapes("Text Box 1").TextFrame.Characters.Text = ""
    
    End If
    
    lEski_a = a
    lEsli_b = b
    
    Set VeriNoktasi = Nothing
End Sub

Private Sub Class_Terminate()
    Set ChartObject = Nothing
End Sub
Daha sonra; standart bir module sayfası ekleyerek aşağıdaki kodlar dahil edilir.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
 
Dim GrafikNesneSinifi As New Grafik_Olaylari
Sub Auto_Open()
    Set GrafikNesneSinifi.ChartObject = Worksheets(1).ChartObjects(1).Chart
End Sub
Eklenmiş Dosyalar
Dosya Türü: xls 63934.xls (74.0 KB, 178 Görüntülenme)
__________________
Bugün pazar. | Bugün beni ilk defa güneşe çıkardılar. | Ve ömrümde ilk defa gökyüzünün | bu kadar benden uzak | bu kadar mavi | bu kadar geniş olduğuna şaşarak | kımıldamadan durdum. | Sonra saygıyla toprağa oturdum, | dayadım sırtımı duvara. | Bu anda ne düşmek dalgalara, | bu anda ne kavga,ne hürriyet, ne karım. | Toprak, güneş ve ben | Bahtiyarım| NAZIM/1938
www.xlchart.blogspot.com
Ferhat Pazarçevirdi Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-02-2009, 17:30   #4
nerodale@yahoo.com
 
Giriş: 11/02/2009
Şehir: istanbul
Mesaj: 11
Excel Vers. ve Dili:
excel 2003 ingilizce
Varsayılan

Çok teşekkür ederim. Tam istediğim gibi bir uygulama olmuş. Kodları inceleyip düzenlemeye çalışacağım. Tekrar teşekkürler..
nerodale@yahoo.com Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-02-2009, 17:37   #5
Levent Menteşoğlu
Administrator
 
Levent Menteşoğlu kullanıcısının avatarı
 
Giriş: 13/10/2004
Şehir: Çorlu
Mesaj: 15,896
Excel Vers. ve Dili:
Excel 2010-Türkçe
Varsayılan

Ferhat bey tebrik ederim çok güzel bir örnek, bu çözümü arşivime aldım. Çözümünüzü inceleyince benimde aklıma chartspace nesnesinin kullanılması geldi. Bu nesnenin direk mouse_move olayından faydalanılabilir. Bu nesnede de sorun, verileri direk excel hücrelerinden alamıyor olmasıdır. Bu konu üzerinde de ben bir çalışma yapayım. Sonuç elde edebilirsem, güzel bir arşiv elde etmiş oluruz.
__________________
FORUM KURALLARI



"Biz burada hep beraber, sevginin,saygının, alınterinin, mutluluğun makrosunu yazıyoruz. " Kaylan
Levent Menteşoğlu Çevrimdışı   Alıntı Yaparak Cevapla
Eski 13-02-2009, 17:50   #6
Ferhat Pazarçevirdi
 
Ferhat Pazarçevirdi kullanıcısının avatarı
 
Giriş: 15/06/2006
Şehir: İzmir
Mesaj: 3,723
Excel Vers. ve Dili:
Excel 2003, 2007, 2010 (TR)
Varsayılan

Haklısınız Levent bey... Normal Excel sheet ve grafiklerine karşı, OWC'lerde çok daha fazla event var. Kodlama daha rahat olabilir. Bitirdiğinizde yayınlayabilirseniz, grafiklere yeni ve farklı bir bakış açısı yaratacağına eminim ...

Ben daha önce ChartSpace nesnesini sayfa üzerinde kullanmadım hiç ...

NOT : Aklıma geldi ... Microsoft'un bir tane daha Chart nesnesi vardı ... Belki o da denenebilir. Adı aklıma gelmedi kusura bakmayın. Ms Chart gibi birşeydi sanırım ..
__________________
Bugün pazar. | Bugün beni ilk defa güneşe çıkardılar. | Ve ömrümde ilk defa gökyüzünün | bu kadar benden uzak | bu kadar mavi | bu kadar geniş olduğuna şaşarak | kımıldamadan durdum. | Sonra saygıyla toprağa oturdum, | dayadım sırtımı duvara. | Bu anda ne düşmek dalgalara, | bu anda ne kavga,ne hürriyet, ne karım. | Toprak, güneş ve ben | Bahtiyarım| NAZIM/1938
www.xlchart.blogspot.com
Ferhat Pazarçevirdi Çevrimdışı   Alıntı Yaparak Cevapla
Eski 14-02-2009, 02:32   #7
Levent Menteşoğlu
Administrator
 
Levent Menteşoğlu kullanıcısının avatarı
 
Giriş: 13/10/2004
Şehir: Çorlu
Mesaj: 15,896
Excel Vers. ve Dili:
Excel 2010-Türkçe
Varsayılan

Chartspace nesnesi ile uzun uğraşılardan sonra hazırladığım dosyayı ekte sunuyorum. Dosya açıldığında aşağıdaki gibi bir uyarı mesajı alırsanız bir altta vereceğim kodu sadece bir kez çalıştırınız.

This Application is about yo initialize ActiveX controls that might be unsafe.If you trust the source of this file, select OK and the controls will be initialized using your current workspace settings.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub regolustur() Dim deg As Object anahtar = "HKCU\Software\Microsoft\VBA\Security\LoadControlsInForms" Set deg = CreateObject("WScript.Shell") deg.RegWrite anahtar, 1, "REG_DWORD"
End Sub

Dosyada kullanılan kodlar aşağıdaki gibidir.
Sayfaya bir chartspace nesnesi ekledikten sonra,

Nesneye verileri, sayfadaki tablodan yükleyen prosedür için normal bir module:

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Public deg As New Spreadsheet

Sub auto_open()
deg.Range("b3:d15").Value = Sayfa1.Range("b3:d15").Value
With Sayfa1.ChartSpace1
.DataSource = deg
With .Charts(0)
.Type = chChartTypeLineMarkers
With .SeriesCollection(0)
.SetData chDimCategories, 0, "B4:B15"
.SetData chDimValues, 0, "C4:C15"
End With
With .SeriesCollection(1)
.SetData chDimCategories, 0, "B4:B15"
.SetData chDimValues, 0, "D4:D15"
End With
End With
End With
End Sub

Nesnenin mouse_move olayının çalışması ve veriler değiştiğinde güncelleme yapmak içinde sayfanın kod sayfasına:

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Private Sub ChartSpace1_MouseMove(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
Sayfa1.Shapes("metin").TextFrame.Characters.Text = ""
If TypeName(Sayfa1.ChartSpace1.RangeFromPoint(x, y)) <> "ChPoint" Then Exit Sub
yil = Sayfa1.ChartSpace1.RangeFromPoint(x, y).GetValue(chDimSeriesNames)
ay = Sayfa1.ChartSpace1.RangeFromPoint(x, y).GetValue(chDimCategories)
For a = 22 To [a65536].End(3).Row
If Cells(a, "a") = CDbl(yil) And Cells(a, "b") = ay Then
Sayfa1.Shapes("metin").TextFrame.Characters.Text = Cells(a, "c")
End If
Next
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [c4:d15]) Is Nothing Then Exit Sub
auto_open
End Sub
Eklenmiş Dosyalar
Dosya Türü: zip grafik.zip (30.2 KB, 152 Görüntülenme)
__________________
FORUM KURALLARI



"Biz burada hep beraber, sevginin,saygının, alınterinin, mutluluğun makrosunu yazıyoruz. " Kaylan
Levent Menteşoğlu Çevrimdışı   Alıntı Yaparak Cevapla
Eski 14-02-2009, 12:19   #8
ersoyalan
 
ersoyalan kullanıcısının avatarı
 
Giriş: 10/04/2008
Şehir: ist
Mesaj: 577
Excel Vers. ve Dili:
2000,2003,2007
Varsayılan

Ferhat hocam ve Levent hocam araya giriyorum fakat oldukça güzel çalışmalar yapmışsınız.Ellerinize sağlık aradığım bir konuydu bu vesileyle bende işimi görmüş oldum.

Teşekkür eder.

Syg,
iyi çalışmalar.
E.ALAN
ersoyalan Çevrimdışı   Alıntı Yaparak Cevapla
Eski 24-01-2011, 01:32   #9
1Al2Ver
Altın Üye
 
1Al2Ver kullanıcısının avatarı
 
Giriş: 05/11/2007
Şehir: İstanbul / Maltepe
Mesaj: 3,615
Excel Vers. ve Dili:
Microsoft Office 365 ProPlus
Varsayılan Hata mesajı

Merhaba,

Benim PC'den kaynaklanan bir eksiklikten dolayı hata almaktayım, nasıl bir düzenleme yapmalıyım ?

Teşekkür ederim.

__________________
Esen Kalın...
1Al2Ver Çevrimdışı   Alıntı Yaparak Cevapla
Eski 24-01-2011, 08:08   #10
rhombeus
 
Giriş: 23/12/2009
Şehir: İSTANBUL
Mesaj: 114
Excel Vers. ve Dili:
Excel 2003
Varsayılan

Gerçekten süper bir çalışma, teşekkürler...
rhombeus Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 23:24


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Palet- Çerkezköy Palet- Çorlu Prefabrik- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden