Grafikte Sayı ve % Kullanılması

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Merhaba
Aşağıdaki makro ile grafikte kullanılan değerleri "A1" hücresinde yer alan değere göre % veya sayı değerine çeviriyor fakat "A1" hücresinin içine girip enter yapmayınca hesaplama yapmıyor
A1 hücresi dilimleyiciden seçerek değiştiriyorum, burada yazan değere göre grafik verileri değişiyor
Hücreye girip entere basmadan bunu nasıl yapabliriz

Private Sub Worksheet_Calculate()
'MsgBox ActiveSheet.Name

If ActiveSheet.Range("A1").Value = 1 Or ActiveSheet.Range("A1").Value = 2 Or ActiveSheet.Range("A1").Value = 3 Or ActiveSheet.Range("A1").Value = 4 Or ActiveSheet.Range("A1").Value = 5 Or ActiveSheet.Range("A1").Value = 6 Or ActiveSheet.Range("A1").Value = 7 Or ActiveSheet.Range("A1").Value = 8 Or ActiveSheet.Range("A1").Value = 6 _
Or ActiveSheet.Range("A1").Value = 7 Or ActiveSheet.Range("A1").Value = 8 Or ActiveSheet.Range("A1").Value = 9 Or ActiveSheet.Range("A1").Value = 10 Or ActiveSheet.Range("A1").Value = 11 Or ActiveSheet.Range("A1").Value = 12 Or ActiveSheet.Range("A1").Value = 13 Or ActiveSheet.Range("A1").Value = 14 Then
ThisWorkbook.Sheets("ÖZET").ChartObjects("Grafik 15").Activate
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "0%"

Else
ThisWorkbook.Sheets("ÖZET").ChartObjects("Grafik 15").Activate
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "#0"
End If
End Sub
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,330
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Kodlarınız Worksheet_Calculate kodları, yani sayfada hesaplama yapınca tetikleniyor. Bunun için sayfada bir hücrede değişiklik yapınca çalışıyor. Bunun yerine formüller sekmesinden hesapla butonuna tıklayabilirsiniz, ya da kısayol olarak F9 tuşuna basabilirsiniz.
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
meşgul ettim, yanlış sayfada deniyormuşum, hakkınızı helal edin
 
Son düzenleme:

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,330
Excel Vers. ve Dili
2007 Türkçe
Sorun değil,
İyi çalışmalar...
İlaveten, dilerseniz if sorgunuzu If ActiveSheet.Range("A1").Value > 0 And ActiveSheet.Range("A1").Value < 15 Then şeklinde kısaltabilirsiniz.
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
bu çok güzel olur
Teşekkür ederim
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Hücre değeri;
0 - 15 arasında olursa %
19 olursa sayısal ve milyona bölünmüş
Farklı olursa saysal

Hücre değeri 19 olunca sayısal milyona bölmeyi yazamadım, nasıl bağlamam gerekiyor

If ActiveSheet.Range("F141").Value = 19
ActiveSheet.ChartObjects("Grafik 15").Activate
ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "#.###"
ActiveChart.Axes(xlValue).DisplayUnit = xlMillions
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,330
Excel Vers. ve Dili
2007 Türkçe
Deneme imkanım olmadığı için paylaştığınız kodlara göre yazdım. Hata oluşabilir, sanırım siz uyarlayabilirsiniz.
Kod:
If ActiveSheet.Range("A1").Value > 0 And ActiveSheet.Range("A1").Value < 15 Then
    ThisWorkbook.Sheets("ÖZET").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "0%"

ElseIf ActiveSheet.Range("F141").Value = 19 Then
    ActiveSheet.ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "#.###"
    ActiveChart.Axes(xlValue).DisplayUnit = xlMillions

Else
    ThisWorkbook.Sheets("ÖZET").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "#0"
End If
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
@ÖmerBey çok teşekkür ederim, kodların nihai hali paylaşmak istedim

Kod:
Private Sub Worksheet_Calculate()

ActiveSheet.Unprotect Password:=""

If ActiveSheet.Range("F141").Value > 0 And ActiveSheet.Range("F141").Value < 15 Then
ActiveSheet.ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "0%"
    ActiveChart.Axes(xlValue).DisplayUnit = xlNone

ActiveSheet.Protect Password:=""

ElseIf ActiveSheet.Range("F141").Value = 19 Then
    ActiveSheet.ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "#.###"
    ActiveChart.Axes(xlValue).DisplayUnit = xlMillions
    ActiveChart.Axes(xlValue).HasDisplayUnitLabel = True
   
ActiveSheet.Protect Password:=""

Else
ActiveSheet.ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "#.###"
ActiveChart.Axes(xlValue).DisplayUnit = xlNone

ActiveSheet.Protect Password:=""

End If
End Sub

248028
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Merhaba Ömer Bey

Bu hesaplama başka sayfada işlem yapınca da çalışıyor ve grafiğin olduğu sayfaya atıyor, başka sayfalarda bir şey yaptırmıyor
Hesaplama sadece grafiğin olduğu sayfa da işlem yaparsam çalışması gerekmez mi
Hatta F141 hücresinde bir değişiklik olursa çalışması gerekmez mi, Excel de her değişiklikte çalışıyor

Sadece grafikte işlem yapınca çalışması için ne yapmak gerekir

Kod:
Private Sub Worksheet_Calculate()

Sheets("Özet").Unprotect Password:=""

If Sheets("Özet").Range("F141").Value > 0 And Sheets("Özet").Range("F141").Value < 15 Then
Sheets("Özet").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "0%"
    ActiveChart.Axes(xlValue).DisplayUnit = xlNone

Sheets("Özet").Protect Password:=""

ElseIf Sheets("Özet").Range("F141").Value = 19 Then
    Sheets("Özet").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "#.###"
    ActiveChart.Axes(xlValue).DisplayUnit = xlMillions
    ActiveChart.Axes(xlValue).HasDisplayUnitLabel = True
    
Sheets("Özet").Protect Password:=""

Else
Sheets("Özet").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "#.###"
ActiveChart.Axes(xlValue).DisplayUnit = xlNone

Sheets("Özet").Protect Password:="" 

End If
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Calculate olayı yerine aşağıdaki gibi Change olayını kullanın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("F141")) Is Nothing Then Exit Sub

Sheets("Özet").Unprotect Password:=""

If Sheets("Özet").Range("F141").Value > 0 And Sheets("Özet").Range("F141").Value < 15 Then
Sheets("Özet").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "0%"
    ActiveChart.Axes(xlValue).DisplayUnit = xlNone

Sheets("Özet").Protect Password:=""

ElseIf Sheets("Özet").Range("F141").Value = 19 Then
    Sheets("Özet").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "#.###"
    ActiveChart.Axes(xlValue).DisplayUnit = xlMillions
    ActiveChart.Axes(xlValue).HasDisplayUnitLabel = True
    
Sheets("Özet").Protect Password:=""

Else
Sheets("Özet").ChartObjects("Grafik 15").Activate
    ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "#.###"
ActiveChart.Axes(xlValue).DisplayUnit = xlNone

Sheets("Özet").Protect Password:=""

End If

End Sub
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Levent Hocam

F141 hücresi dilimleyici ile değişiyor, bu nedenle makro tetiklenmiyor
Manuel yapınca veya manuel yapılan işlemi makroya bağlayınca oluyor
Bunu dilimleyici arkasına bağlanır mı, yada chance olayı dilimleyici ile dolan hücreyi dikkate alabilir mi

Kod:
Sub Tetikleme()
    Range("F141").Select
    ActiveCell.FormulaR1C1 = "=+Sayfa1!R[-140]C[-5]"
    Range("F142").Select
End Sub
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Levent Hocam

F141 hücresi dilimleyici ile değişiyor, bu nedenle makro tetiklenmiyor
Manuel yapınca veya manuel yapılan işlemi makroya bağlayınca oluyor
Bunu dilimleyici arkasına bağlanır mı, yada chance olayı dilimleyici ile dolan hücreyi dikkate alabilir mi
Farketmez dilimleyici ile hücre değişse de change olayının çalışması gerekir.
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Örnek dosya ekledim
Calculate olunca dilimleyici ile hücre değişmesi sorun olmuyor
Change olunca sadece elle değiştirince tetikleniyor, dilimleyici ile seçim yaptığım zaman algılamıyor
 

Ekli dosyalar

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ekteki gibi bir mantık kurabilirsiniz.
 

Ekli dosyalar

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Orjinal dosyada çok fazla veri olması nedeniyle sürekli hesaplama yapıyordu
Calculate olayını ayrı bir sayfada yaptırdım
Teşekkür ederim @Levent Menteşoğlu Bey
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Merhaba
Sadece UserForm açık olup Excel dosyasını gizlediğim çalışma var
Sayfaların önüne ThisWorkbook ekleyerek geçiyorum

Selection.TickLabels.NumberFormat = "0%" bu satırı dosya gizli iken geçemiyorum

"object doesn't support this property or method" hatası veriyor, dosya kapalı olduğu için bulamıyor, dosyayı geçici görünür yaparak geçmeye çalıştığımda bu defa tekrar gizlemiyor, sürekli görünür oluyor

Bir öneri var mıdır

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("D6")) Is Nothing Then Exit Sub

If ThisWorkbook.Sheets("Grafik").Range("D6").Value > 0 And ThisWorkbook.Sheets("Grafik").Range("D6").Value < 15 Then
ThisWorkbook.Sheets("Grafik").ChartObjects("Grafik1").Activate
    ThisWorkbook.ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "0%"
    ThisWorkbook.ActiveChart.Axes(xlValue).DisplayUnit = xlNone



ElseIf ThisWorkbook.Sheets("Grafik").Range("D6").Value = 19 Then
    ThisWorkbook.Sheets("Grafik").ChartObjects("Grafik1").Activate
    ThisWorkbook.ActiveChart.Axes(xlValue).Select
    Selection.TickLabels.NumberFormat = "#.###"
    ThisWorkbook.ActiveChart.Axes(xlValue).DisplayUnit = xlMillions
    ThisWorkbook.ActiveChart.Axes(xlValue).HasDisplayUnitLabel = True
    
Else

ThisWorkbook.Sheets("Grafik").ChartObjects("Grafik1").Activate
ThisWorkbook.ActiveChart.Axes(xlValue).Select
Selection.TickLabels.NumberFormat = "#.###"
ThisWorkbook.ActiveChart.Axes(xlValue).DisplayUnit = xlNone

End If


End Sub
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,330
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Denemeden yazıyorum...
Select komutunu kullanmadan işlemi aşağıdaki şekilde yaptırsanız olmaz mı acaba?
Kod:
ThisWorkbook.ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "0%"
 

mekist

Altın Üye
Katılım
13 Ağustos 2008
Mesajlar
324
Excel Vers. ve Dili
Office 365 ProPlus-Türkçe
Altın Üyelik Bitiş Tarihi
03-10-2026
Merhaba @ÖmerBey

Her kodun altına Select seçimi yaptırarak sorunu çözdüm, geri dönüş için teşekkür ederim
 
Üst