• DİKKAT

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

Hücreden Sayfa Adı oluşturma

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Merhaba,

Sayfa Adlarını Tablodaki Hücrelere girerek oluşturmak mümkün müdür ?
Bunun tam tersinin yapılma yöntemini biliyorum, yani Sayfa Adlarını Tabloya aldırma işlemi mümkün.

Örneğin 50 adet sayfam var. Sayfa1, Sayfa2, Sayfa3 ........ Sayfa49, Sayfa50 gibi

Oluşturacağım A1:A50 Sütundaki Hücrelerde, A1 Hücresine ADANA girdiğimde, Sayfa1 adı ADANA olacak, A6 Hücresine SİVAS girdiğimde Sayfa6 adı SİVAS olacak.

Varsa çözümünü rica ederim.
 
Aşağıdaki kodu deneyin
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim cell As Range
    Set rng = Range("A1:A50")
    
    If Not Intersect(Target, rng) Is Nothing Then
        For Each cell In Intersect(Target, rng)
            Sheets("Sayfa" & cell.Row).Name = cell.Value
        Next cell
    End If
End Sub
 
Merhaba Arkadaşım,
Alternatif olsun
Kod:
Sub SayfaAdiDegis()
    For x = 1 To Sheets.Count - 1
        Sheets(x).Name = Cells(x, 1).Value
    Next
End Sub
51. sayfanın A sütununa yazacağınız isimleri Sayfa1 den Sayfa50 ye kadar değiştirir. Lütfen makroyu 51. sayfada iken çalıştırınız.
İyi çalışmalar
 
Sayfa isimlendirirken excelin 31 karakter sınırı bulunmaktadır. Bu kurala uyarak kodu revize ederseniz hatasız sonuçlar alabilirsiniz.

Bu satır yerine;

C++:
Sheets(x).Name = Cells(x, 1).Value


Aşağıdaki gibi kullanmak daha faydalı olacaktır.

C++:
Sheets(x).Name = Left(Cells(x, 1).Value, 31)
 
Aşağıdaki kodu deneyin
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Dim cell As Range
    Set rng = Range("A1:A50")
   
    If Not Intersect(Target, rng) Is Nothing Then
        For Each cell In Intersect(Target, rng)
            Sheets("Sayfa" & cell.Row).Name = cell.Value
        Next cell
    End If
End Sub

Teşekkür ederim, elinize sağlık...
 
Merhaba Arkadaşım,
Alternatif olsun
Kod:
Sub SayfaAdiDegis()
    For x = 1 To Sheets.Count - 1
        Sheets(x).Name = Cells(x, 1).Value
    Next
End Sub
51. sayfanın A sütununa yazacağınız isimleri Sayfa1 den Sayfa50 ye kadar değiştirir. Lütfen makroyu 51. sayfada iken çalıştırınız.
İyi çalışmalar

İlginize teşekkür ederim, lakin hata alıyorum. (ekteki resim)
 

Ekli dosyalar

  • Ekran görüntüsü 2023-10-09 042020.png
    Ekran görüntüsü 2023-10-09 042020.png
    11.6 KB · Görüntüleme: 4
Sayfa isimlendirirken excelin 31 karakter sınırı bulunmaktadır. Bu kurala uyarak kodu revize ederseniz hatasız sonuçlar alabilirsiniz.

Bu satır yerine;

C++:
Sheets(x).Name = Cells(x, 1).Value


Aşağıdaki gibi kullanmak daha faydalı olacaktır.

C++:
Sheets(x).Name = Left(Cells(x, 1).Value, 31)

Korhan bey,

Tevfik bey'in yardımına yaptığınız katkı ile birlikte denediğimde de ekteki hatayı alıyorum..
Diğer taraftan RecepKull'un çözümü çalışıyor...
 

Ekli dosyalar

  • Ekran görüntüsü 2023-10-09 042020.png
    Ekran görüntüsü 2023-10-09 042020.png
    11.6 KB · Görüntüleme: 7
Çalışıyor dediğiniz kod önerisi içinde 31 karakter kuralı geçerlidir.

Yani hücrede 32 karakterlik bir isim olması durumunda çalışıyor dediğiniz kodda hata verecektir.

Ayrıca hata veren satırda hatanın içeriği önemlidir. Büyük ihtimalle iki sayfaya aynı isim vermeye çalışıyor olabilirsiniz. Ya da sayfa adında geçersiz karakter bulunuyor olabilir.
 
Altın üyesiniz, örneğinizi eklemiş olsanız çözüm çok daha kolay olurdu.
 
Sayfa isimlendirirken excelin 31 karakter sınırı bulunmaktadır. Bu kurala uyarak kodu revize ederseniz hatasız sonuçlar alabilirsiniz.

Bu satır yerine;

C++:
Sheets(x).Name = Cells(x, 1).Value


Aşağıdaki gibi kullanmak daha faydalı olacaktır.

C++:
Sheets(x).Name = Left(Cells(x, 1).Value, 31)


Korhan hocam merhaba
Recepkul hocamın kodunda bahsettiğiniz yeri 31 olarak yaptım fakat hata verdi.

Kod:
Sheets("Sayfa" & cell.Row).Name = Left(cell.Value, 31)
 
Çalışıyor dediğiniz kod önerisi içinde 31 karakter kuralı geçerlidir.

Yani hücrede 32 karakterlik bir isim olması durumunda çalışıyor dediğiniz kodda hata verecektir.

Ayrıca hata veren satırda hatanın içeriği önemlidir. Büyük ihtimalle iki sayfaya aynı isim vermeye çalışıyor olabilirsiniz. Ya da sayfa adında geçersiz karakter bulunuyor olabilir.

Örnek Dosya ektedir...
 

Ekli dosyalar

Örneğin 50 adet sayfam var. Sayfa1, Sayfa2, Sayfa3 ........ Sayfa49, Sayfa50 gibi
Bence sizin hata alıyor olmanızın sebebi sayfa isminin bulunamıyor olmasıdır. Mesela A10 hücresinde işlem yapıyorsanız Sayfa10 adında bir sayfanızın olması lazım aksi halde hata alırsınız.
 
Merhaba,
Varsayımınız doğru değil. Örnek dosya aslı gibidir...
 
Ben vermiş olduğum kodda herhangi bir hata almıyorum. Sizin istediğiniz gibi çalışıyor.
 
Pardon yanıtım size değildi, özür diliyorum.
Size sadece teşekkür etmiştim.
 
Son düzenleme:
Öncelikle şunu belirtmemde fayda var.

Ben sayfa ismindeki 31 karakterlik sınırlama için örnek verirken #3 nolu mesajdaki koddan alıntı yaparak örneklendirdim. Bu tamamen bilgi amaçlı bir mesajdı. Yani #3 nolu mesajdaki kodun çözüm üretip üretmemesiyle ilgili değildir.

Ayrıca #3 nolu mesajda aşağıdaki gibi bir dipnot düşülmüş...

51. sayfanın A sütununa yazacağınız isimleri Sayfa1 den Sayfa50 ye kadar değiştirir. Lütfen makroyu 51. sayfada iken çalıştırınız.
İyi çalışmalar
 
Tartışmayı devam ettirmeye gerek yok. Hiç biri çok önemli değil, arkadaşımızın siteye koyduğu örneklere bakmak yeterli.
 
Öncelikle şunu belirtmemde fayda var.

Ben sayfa ismindeki 31 karakterlik sınırlama için örnek verirken #3 nolu mesajdaki koddan alıntı yaparak örneklendirdim. Bu tamamen bilgi amaçlı bir mesajdı. Yani #3 nolu mesajdaki kodun çözüm üretip üretmemesiyle ilgili değildir.

Ayrıca #3 nolu mesajda aşağıdaki gibi bir dipnot düşülmüş...
Korhan hocam, Recepkul hocanın koduna da 31 karakter sınırı özelliğini ekleyebilr misiniz?
(Arşivimizde böyle bulunsun)
 
Geri
Üst