Excelde Alt Sekme Formül Uygulanabilir mi?

Katılım
19 Kasım 2010
Mesajlar
14
Excel Vers. ve Dili
tr
Altın Üyelik Bitiş Tarihi
09-04-2023
Arkadaşlar Merhaba,

Aranıza yeni katılmış bulunuyorum internette ve forumda aradım bulamadım. Şu konuda yardıma ihtiyacım var. Excelde alt sekmede Sayfa1, Sayfa2 yazan yere formül yazabilir miyiz. Örneğin A2 hücresine "Aralık" yazdığım zaman alt sekmede "Sayfa1" kısmına otomatik olarak yazacak.
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,513
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
Aşağıdaki kod bloğu, A2 hücresi değiştiğinde Aktif Sayfa Adını A2 hücresinde yazan değer yapar.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 2 And Target.Column = 1 And Trim(Target.Value) <> "" Then
ActiveSheet.Name = Target.Value

End If
End Sub
 
Katılım
19 Kasım 2010
Mesajlar
14
Excel Vers. ve Dili
tr
Altın Üyelik Bitiş Tarihi
09-04-2023
Çok Teşekkürler, iyi çalışmalar.
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Aşağıdaki kod bloğu, A2 hücresi değiştiğinde Aktif Sayfa Adını A2 hücresinde yazan değer yapar.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 2 And Target.Column = 1 And Trim(Target.Value) <> "" Then
ActiveSheet.Name = Target.Value

End If
End Sub
Sayın @kulomer46 ,
Konu altında konu gibi olacak ama umarım sıkıntı olmaz.
Tam tersini yapmak istersek, yani sayfa adını a2 hücresine vermek istersek hangi kodu kullanmamız gerekir acaba?
Teşekkürler.
 

Korhan Ayhan

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

Aktif sayfada bir hücreye tıkladığınızda kod tepki verir.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("A2").Value = ActiveSheet.Name
End Sub
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Teşekkürler
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Deneyiniz.

Aktif sayfada bir hücreye tıkladığınızda kod tepki verir.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("A2").Value = ActiveSheet.Name
End Sub
Merhabalar,
Aktif sayfaya değil de bir kerede tüm sayfalara uygulamak için ne yapmam gerekiyor acaba?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bir modüle kodu uygulayıp çalıştırınız.

Kod:
Sub Sayfa_Adi_Guncelle()
    For Each Sayfa In ThisWorkbook.Worksheets
        If Sayfa.Range("A2") <> "" Then
            Sayfa.Name = Sayfa.Range("A2").Value
        End If
    Next
    
    MsgBox "Sayfa isimleri güncellenmiştir."
End Sub
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Teşekkürler
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Aşağıdaki kod bloğu, A2 hücresi değiştiğinde Aktif Sayfa Adını A2 hücresinde yazan değer yapar.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 2 And Target.Column = 1 And Trim(Target.Value) <> "" Then
ActiveSheet.Name = Target.Value

End If
End Sub
Hocam seni de yoruyorum ama sana zahmet bir de bunun toplu kodunu yazabilir misin?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Benim önerdiğim kod zaten tüm sayfa isimlerini "A2" hücrelerine göre isimlendiriyor. Siz farklı bir şey mi istiyorsunuz?
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Benim önerdiğim kod zaten tüm sayfa isimlerini "A2" hücrelerine göre isimlendiriyor. Siz farklı bir şey mi istiyorsunuz?
Çok afedersiniz, bir karışıklık olmuş. Sizden ilk olarak sayda adını hücreye yazdırmayı sormuştum. Siz de şu kodu vermiştini:

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("A2").Value = ActiveSheet.Name
End Sub
Ben de bunun (belki eksik bir anlatım oldu ama tüm sayfa isimlerini kendi içeriklerindeki bir hücreye yazma kodunu kastederek) toplu bütün sayfalar için olanını sorunca aşağıdaki kodu verdiniz.

Kod:
Sub Sayfa_Adi_Guncelle()
    For Each Sayfa In ThisWorkbook.Worksheets
        If Sayfa.Range("A2") <> "" Then
            Sayfa.Name = Sayfa.Range("A2").Value
        End If
    Next
    
    MsgBox "Sayfa isimleri güncellenmiştir."
End Sub
Ben de denemeden arşivime ekledim. Ve bu sefer tüm a2 hücresindeki isimlerin bulundukları sayfaya atanmasının toplu komutunu rica ettim. Ki meğer siz zaten onu vermişsiniz. Şimdi denedim evet oluyor fakat her değişiklik sonrası güncelleme için makroyu çalıştır dememiz gerekiyor sanırım. Bunu otomatikleştirebilir miyiz?

Bir de ilk verdiğiniz aşağıdaki sayfa ismini hücreye verme kodunun

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A2").Value = ActiveSheet.Name
End Sub


toplu kodunu verebilir misiniz? Ve mümkünse her seferinde makro çalıştırı tıklamadan, otomatik çalışanı.

Karışıklıktan dolayı kusura bakmayın lütfen. Şimdiden teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tüm sayfalarda dinamik olarak çalışması için aşağıdaki kodu BuÇalışmaKitabı (ThisWorkBook) bölümüne uygulamalısınız.

Kod:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sayfa In ThisWorkbook.Worksheets
        If Sayfa.Range("A2") <> "" Then
            Sayfa.Name = Sayfa.Range("A2").Value
        End If
    Next
End Sub
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Çok çok teşekkürler.

Bir de bunun tüm sayfalara toplu ve dinamik versiyonunu alabilir miyim? :giggle:

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A2").Value = ActiveSheet.Name
End Sub
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Son mesajınızdaki kod sayfaya ait bir koddur. Elbette bu kod içine de benim son mesajımda verdiğim kod içindeki döngüyü yazarsak kod çalışacaktır.

Aradaki fark şu olacaktır. Son mesajımda ki kod dosyadaki tüm sayfalarda tetiklenecektir. Sizin son mesajınızda ki kod ise hangi sayfaya uygularsanız o sayfada işlem yaptığınızda tetiklenecektir.

Her neyse sizin talebinize göre kod aşağıdaki şekilde olacaktır.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For Each Sayfa In ThisWorkbook.Worksheets
        If Sayfa.Range("A2") <> "" Then
            Sayfa.Name = Sayfa.Range("A2").Value
        End If
    Next
End Sub
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Son mesajınızdaki kod sayfaya ait bir koddur. Elbette bu kod içine de benim son mesajımda verdiğim kod içindeki döngüyü yazarsak kod çalışacaktır.

Aradaki fark şu olacaktır. Son mesajımda ki kod dosyadaki tüm sayfalarda tetiklenecektir. Sizin son mesajınızda ki kod ise hangi sayfaya uygularsanız o sayfada işlem yaptığınızda tetiklenecektir.

Her neyse sizin talebinize göre kod aşağıdaki şekilde olacaktır.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For Each Sayfa In ThisWorkbook.Worksheets
        If Sayfa.Range("A2") <> "" Then
            Sayfa.Name = Sayfa.Range("A2").Value
        End If
    Next
End Sub
Hocam belki doğru anlatamamışımdır veya siz yanlış anlamış olabilirsiniz. Bu biraz önce verdiğiniz, sayfa adlarını a2 hücresinden alan koda benziyor içerik olarak. Makrodan hiç anlamadığım için yanılıyor olabilirim. Önceki verdiğiniz çalışıyordu. Bu çalışmıyor.
Çalışan kodunuz çok güzel, teşekkürler. Bir de ayrıca o kodun tam tersini, yani içeriğinde "Range("A2").Value = ActiveSheet.Name" geçen, sayfa adını A2 hücresine yazan kodun, kitabın bütün sayfalarının kendi bünyesindeki A2 hücrelerine dinamik olarak uygulayan toplu komut kodunu istiyorum mümkünse. Müsait vaktinizde zaman ayırabilirseniz memnun olurum. Teşekkürler.
 

Korhan Ayhan

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

1. Alternatif;
BuÇalışmaKitabı

Kod:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    For Each Sayfa In ThisWorkbook.Worksheets
        Sayfa.Range("A2") = Sayfa.Name
    Next
End Sub
2. Alternatif;
Sayfanın kod bölümü

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For Each Sayfa In ThisWorkbook.Worksheets
        Sayfa.Range("A2") = Sayfa.Name
    Next
End Sub
 
Katılım
8 Ekim 2009
Mesajlar
642
Excel Vers. ve Dili
Office 2010 & 2016 TR
Altın Üyelik Bitiş Tarihi
26-12-2023
Teşekkürler, zahmet verdim.
 
Üst