Sayfa İsminin Hücre Değerinden Alması

mucalt

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
12
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
09-08-2028
merhabalar

Excel sayfa isminin hücreden almasını istiyorum. bununla ilgili forumda arama yaptım şöyle bir kod buldum

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "H5" Then Exit Sub
ActiveSheet.Name = Range("H5").Value
End Sub

ancak bulduklarım benim senaryoma göre çalışmadı şöyle ki doğrudan hücreye metin yazıldığında sayfa ismi değişiyor fakat hücre ismi formülle çekildiğinde değişmiyor.

a1 hücresinde mahalle adı
a2 hücresinde ada
a3 hücresinde parsel bilgisi yer almakta bu üç bilgiyi birleştir formülü ile farklı bir hücrede (örneği a4 hücresinde) birleştirip sayfa adını bu hücreden alsın istiyorum. mahalle adı ada ve parsel numaraları değiştiğinde değişmiyor.

formülle çekilen isimler için farklı bir yöntem var mı? yada en azından excel her açılıp kapandığında ismi yenilemesi mümkün mü?
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Merhaba
Kod:
If Target.Address(0, 0) <> "H5" Then Exit Sub
Bu satırı silip dener misiniz?
 

mucalt

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
12
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
09-08-2028
Merhaba
Kod:
If Target.Address(0, 0) <> "H5" Then Exit Sub
Bu satırı silip dener misiniz?
denedim ama işe yaramadı. Hücre içindeki formül değişmediği için değişiklik yok gibi algılıyor. hücre içine doğrudan metin yazıldığında formül çalışıyor ama birleştir formülü veri çekince diğer hücrelerde veri değişse bile değişmiyor.

ilginiz için çok teşekkürler
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
O zaman örnek bir dosya eklemeniz daha uygun olur.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu kodları boş bir modüle yerleştirip deneyiniz.

Dosyanızın açılışında ve kapanışında sayfa isimlerini otomatik düzenleyecektir.

C++:
Option Explicit

Sub Auto_Open()
    Call All_Sheets_Name_Change
End Sub

Sub Auto_Close()
    Call All_Sheets_Name_Change
End Sub

Sub All_Sheets_Name_Change()
    Dim Sh As Worksheet
   
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Range("A4") <> "" Then Sh.Name = Left(Sh.Range("A4"), 31)
    Next
End Sub
 

mucalt

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
12
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
09-08-2028
O zaman örnek bir dosya eklemeniz daha uygun olur.
kafamdaki sayfayı daha oluşturmamıştım ama yine de ben size anlaşılabilir bir excel örneğini drive üzerinden paylaşıyorum. Dosya> Farklı Kaydet>Kopyasını indir diyerek bilgisayarınıza kayıt edebilirsiniz.

Sayfaİsmi.xlsm

ilginiz için teşekkürler.
 

mucalt

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
12
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
09-08-2028
Bu kodları boş bir modüle yerleştirip deneyiniz.

Dosyanızın açılışında ve kapanışında sayfa isimlerini otomatik düzenleyecektir.

C++:
Option Explicit

Sub Auto_Open()
    Call All_Sheets_Name_Change
End Sub

Sub Auto_Close()
    Call All_Sheets_Name_Change
End Sub

Sub All_Sheets_Name_Change()
    Dim Sh As Worksheet
  
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Range("A4") <> "" Then Sh.Name = Left(Sh.Range("A4"), 31)
    Next
End Sub

Korhan bey harikasınız! kod çalıştı yalnız şöyle bir sorun oluştu. excel kitabında kapak, içindekiler, özet, kaynakça gibi sabit olan sayfalar var. bu sayfalarda bu kodun çalışmamasını istiyorum. kod şu haliyle tüm sayfalarda çalışıyor.

kodu ikiye bölmek istedim
Kod:
Option Explicit
Sub Auto_Open()
    Call All_Sheets_Name_Change
End Sub
Sub Auto_Close()
    Call All_Sheets_Name_Change
End Sub
kısmını modüle yükledim

Kod:
Sub All_Sheets_Name_Change()
    Dim Sh As Worksheet
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Range("A4") <> "" Then Sh.Name = Left(Sh.Range("A4"), 31)
    Next
End Sub
diğer kısmı sayfaya yükledim hata verdi.

hepsini sayfaya yükledim yine hata verdi
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Bende çalışıyor dosya. E7 F7 G7 Hücrelerine veri girdikten sonra ENTER düğmesine basınca çalışması lazım.
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Alternatif olsun. Kodları sayfanın kod bölümüne ekleyip deneyin.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, Range("A1:A4")) Is Nothing Then Exit Sub
    cancel = True
    Range("A4").Formula = "=A1&A2&A3"
    ActiveSheet.Name = [A4]
End Sub
 

mucalt

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
12
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
09-08-2028

mucalt

Altın Üye
Katılım
19 Haziran 2008
Mesajlar
12
Excel Vers. ve Dili
Microsoft 365
Altın Üyelik Bitiş Tarihi
09-08-2028
Alternatif olsun. Kodları sayfanın kod bölümüne ekleyip deneyin.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, Range("A1:A4")) Is Nothing Then Exit Sub
    cancel = True
    Range("A4").Formula = "=A1&A2&A3"
    ActiveSheet.Name = [A4]
End Sub

mutlu bey ilginiz için çok teşekkür ederim. Formül sayfa kodunda çalışması nedeniyle yalnızca eklediğim sayfalarda çalıştı. bu açıdan benim işimi gördü. bu kodlamayı epey araştırdım ama kaynak bulamamıştım.

Feylesof, Korhan ve Mutlu bey çok teşekkür ederim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,160
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kodun sadece son bloğunu aşağıdaki gibi değiştirip kullanabilirsiniz.

C++:
Sub All_Sheets_Name_Change()
    Dim Sh As Worksheet, Exclude As Variant, X As Integer, My_Check As Boolean
    
    Exclude = Array("Kapak", "İçindekiler", "Özet", "Kaynakça")
    
    For Each Sh In ThisWorkbook.Worksheets
        For X = LBound(Exclude) To UBound(Exclude)
            If Exclude(X) = Sh.Name Then My_Check = True
            If My_Check = True Then GoTo 10
        Next
        
        If Sh.Range("A4") <> "" Then Sh.Name = Left(Sh.Range("A4"), 31)
10  Next
End Sub
 
Üst