Mouse ile üzerine gelindiğinde zoom yapan grafik

Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Arkadaşlar iyi geceler,

Bunu forumda araştırdım ama konu bulamadım. İngilizce bir sitede birşeyler buldum ama tam olarak anlayamadım ne demek istediğini.

Burada anlamak istediğim şey şu:

Çalışma sayfası üzerinde hazırlanmış grafiklerimiz var. Bunları çok büyük tutamıyorum çünkü zaten ekran kısıtlı bir alan. Mikro chart kullansam çok küçük oluyor. Şöyle düşündüm bu chartlar hazır vaziyette dursun ve mouse ile üzerine gelindiğinde yada üzerine tıklandığında vb. daha önceden belirlediğim büyüklüğe gelsin. Bir nevi zoom yapsın. Böyle bir uygulama mümkün müdür? Yapmış olan var mıdır?

Saygılar
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,235
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Aşağıdaki kod ile bu işlemi yapabilirsiniz.

Kodu boş bir modüle ekleyin. Daha sonra sayfadaki grafiğiniz üzerinde sağ klik yapın ve makro ata işlemini uygulayın.

Bu işlemden sonra boş bir hücreye tıkladıktan sonra grafiğinize mouse ile tıklayın. Grafiğiniz ilk tıklamada büyüyecektir. İkinci tıklamanızda küçülecektir.

Kod içindeki değerlerle oynayarak istediğiniz görüntüyü elde edebilirsiniz.

Kod içindeki sayfa ve grafik adını kendinize göre düzeltmeyi unutmayın.

Uygulamalı örnek dosya ektedir.

Kod:
Option Explicit
Dim Kontrol
 
Sub GRAFİK_BOYUTLANDIR()
    Dim Grafik_1 As Shape
    
    Application.ScreenUpdating = False
    
    Set Grafik_1 = Sheets("Sayfa1").Shapes("Grafik 1")
    
    If Kontrol = False Then
        Application.DisplayFullScreen = True
        With Grafik_1.DrawingObject
            .ShapeRange.LockAspectRatio = msoFalse
            .ShapeRange.Height = 600
            .ShapeRange.Width = 850
            .Chart.ChartArea.Font.Size = 20
        End With
        Kontrol = True
    Else
        Application.DisplayFullScreen = False
        With Grafik_1.DrawingObject
            .ShapeRange.LockAspectRatio = msoTrue
            .ShapeRange.Height = 250
            .ShapeRange.Width = 350
            .Chart.ChartArea.Font.Size = 8
        End With
        Kontrol = False
    End If
    
    Set Grafik_1 = Nothing
    
    Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Sayın moderatörüm öncelikle ilginiz için teşekkür ederim.

Dediklerinizi yaptım ama hata verdi. Debug dediğimde şu satırı işaretlemişti...

Set Grafik_1 = Sheets("Sayfa1").Shapes("Grafik 1")

Sanırım bu grafiğin 1. sayfada olacağını düşünerek hareket eden bir makro bu. halbuki benim makro atadığım grafik sayfa 8 deki grafiklerden biri idi.

Ne yapabilirim?
 
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Bu arada unutmadan ekleyeyim her sayfada 8 adet grafiğim var ve toplamda 20 kusur sayfam var.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,235
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Halbuki sizi üstteki mesajımda uyarmıştım. Dikkatli okumadığınız için sanırım gözünüzden kaçtı.

Kod içinde geçen sayfa ve grafik adını kendinize göre değiştirmeyi unutmayınız.
 
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Ahh evet özür dilerim... peki bunu herhangi bir sayfadaki herhangi bir grafiğe atayabilmem için kod üzerinde nasıl bir değişiklik yapmam gerekir?
Set Grafik_1 = Sheets("Sayfa1").Shapes("Grafik 1") yazan kısımda sayfa1 i silsem ?
 
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Çok iyi bilmediğim için VBA... tabii sadece onu silmek yetmez... grafik1 yazan kısımı da genel bir hale dönüştürmem lazım ama nasıl yapacağımı bilmiyorum açıkcası
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,235
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Bu işlem için Class Module kullanılması uygundur. Bunun için size bir örnek hazırladım.

Kendi dosyanıza uyarlarken benim eklediğim dosyanın ThisWorkbook ve Class1 modülündeki kodları aynen kendi dosyanıza aktarmalısınız.

Sayfalarınızdaki grafiklere çift tıkladığınızda büyüyecektir. Tekrar çift tıklarsanız küçülecektir.

Uygulamalı dosya ektedir.


Uygulanan kodlar;

ThisWorkbook bölümüne;

Kod:
Option Explicit
 
Dim Grfk() As New Class1
Private Sub Workbook_Open()
    Dim Sayfa As Worksheet, Grafik As ChartObject, x As Integer
 
    For Each Sayfa In ThisWorkbook.Worksheets
        For Each Grafik In Sayfa.ChartObjects
            x = x + 1
            ReDim Preserve Grfk(1 To x)
            Set Grfk(x).Grfk = Grafik.Chart
        Next
    Next
End Sub

Class1 modülüne;

Kod:
Option Explicit
Public WithEvents Grfk As Chart
Public Kontrol As Boolean
 
Private Sub Grfk_BeforeDoubleClick(ByVal ElementID As Long, ByVal Arg1 As Long, ByVal Arg2 As Long, Cancel As Boolean)
    Cancel = True
    Application.ScreenUpdating = False
 
    If Kontrol = False Then
        Application.DisplayFullScreen = True
        With Grfk.ChartArea
            .Height = 600
            .Width = 850
            .Font.Size = 20
        End With
        Kontrol = True
    Else
        Application.DisplayFullScreen = False
        With Grfk.ChartArea
            .Height = 250
            .Width = 350
            .Font.Size = 8
        End With
        Kontrol = False
    End If
 
    Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Sayın moderatörüm

Kendi workbookum da Visual Basic editor de bu çalışma kitabı kısmına copy+paste yaptım
Class module ekledim onun içine de aynen copy+ paste yaptım
hatta tepede grafik yazıyordu aynen o kısımları da (General) ve (Declarations) olarak değiştim sizin moduldeki gibi.

Save ettim. grafiğe gittim. zoom yapmadı.. nerede yanlış yapmış olabilirim?
 
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Sayın moderatörüm
save edip kapatıp açınca çalıştı... yalnız ufak bir sorum olacak. Büyütünce yanındaki grafik büyütülmüş grafiğin üstünde gözüküyor. Büyütürken "en öne getir" opsyonunu nasıl ekleyebilirim?
 

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,552
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Sayın Korhan Ayhan emek ve katkınız için teşekkürler.
 
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Sayın Ayhan çok teşekkür ederim. Elinize emeğinize sağlık.
 
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Sayın Korhan Ayan'a bir kez daha teşekkür ederek bu konuyu biraz daha genişletmek istiyorum.
Ben inanılmaz faydasını ve rahatlığını gördüm uygulamanın. Özellikle çok fazla grafik taşıyan raporlar üretenler eminim bu koddan çok istifade edebilirler. Elektronik olarak rapor hazırlarken görünen alanınız ekran büyüklüğünüz kadardır ve yoğun veri üzerinden raporlama yaparken her santimetrekare kıymetlidir. Veri tablolarınızın yanında grafik de bulunması gereken durumlarda alanınızı en verimli şekilde kullanmak için grafiği en optimal küçüklükte tutmak istersiniz.
İşte, Sayın Ayhanın verdiği kod ile verinin grafiksel ifadesini en etkin şekilde kullanabilme fırsatı buldum. İlgimi çeken bir bölgede daha yakından incelemek istediğim zaman grafiğin üzerine çift tıkladığımda istediğim büyüklüğe (ki bu büyüklüğü kod içinde kendimiz ayarlıyoruz) geliyor ve son derece verimli bir görsel analiz imkanı sağlıyor.
Bu uygulamada yaşadığım iki sorun var sadece .
1. Sayfa içinde yanyana grafikler bulunduğu için büyütme işlemi yapıldığında yandaki grafik büyütülen grafiğin içinde kalabiliyor. Dolayısıyla büyüttükten sonra "en öne getir" satırını eklemek
gerekiyor.

2. Grafiğin üzerine çift tıklandığında, grafik genişlemesinin yönünü ayarlayabiliyor olmak isteyebiliyorsunuz. Örneğin: Çift tıkladığım zaman grafiğik sanki sağa doğru yada sola doğru büyüsün gibi...

Bu iki kondisyonun da sağlandığı durumlarda bence kütüphanelik bir çalışma olacaktır.

Herkese iyi günler dilerim.
 
Son düzenleme:
Katılım
26 Eylül 2011
Mesajlar
149
Excel Vers. ve Dili
excel 2010 türkçe
Korhan Üstadın verdiği kodda
nereye ve nasıl enönegetir (bringtofront) kodu ekleyeceğimi bulamadım. Yardımcı olabileceklere şimdiden çok teşekkür ederim.
 
Üst