• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excelde Alt Sekme Formül Uygulanabilir mi?

  • Konbuyu başlatan Konbuyu başlatan yalcin33
  • Başlangıç tarihi Başlangıç tarihi
Katılım
19 Kasım 2010
Mesajlar
14
Excel Vers. ve Dili
tr
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.
 
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
 
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.
 
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
 
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?
 
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
 
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?
 
Benim önerdiğim kod zaten tüm sayfa isimlerini "A2" hücrelerine göre isimlendiriyor. Siz farklı bir şey mi istiyorsunuz?
 
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.
 
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
 
Ç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:
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
 
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.
 
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
 
Teşekkürler, zahmet verdim.
 
Geri
Üst