Bir hücreye bağlı sayfa isimlerinin değişmesi

Katılım
10 Haziran 2021
Mesajlar
12
Excel Vers. ve Dili
2007
Merhaba ,
Bir Excel dosyasında A sayfasi icerisinde I1 den AJ1 e kadar her bir hücrenin içerisindeki tarihlerin ,yine aynı Excel çalışma kitabındaki Sayfa1 den Sayfa 28 e kadar olan her bir sayfa A sayfası içerisindeki yukarıdaki belirttiğim hücrelerin değerlerini alsın .
Mesela
Sayfa1 in ismi A sayfasındaki I1 hucresindeki tarih olmalı (örneğin 15.02.2023 )
Sayfa2 nin ismi A sayfasındaki J1 hucresindeki tarih olmalı ve bu sıralı bir şekilde devam etmeli .

Geri donusunuzu acil bekliyorum . Saygılar
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Aşağıdaki kodu bir modüle yapıştırarak dener misiniz?
C++:
Sub Sayfa_Ac()
    For i = 9 To 36
        Sheets.Add After:=Sheets(Sheets.Count)
        ActiveSheet.Name = Sheets("A").Cells(1, i).Value
    Next i
End Sub
 
Katılım
7 Kasım 2005
Mesajlar
505
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn. dede

Sayfa isimlerini, her sayfanın A1 hücresinden almasını istesem bu kod nasıl olur.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@nongeyikm,

Deneyiniz.

C++:
Option Explicit

Sub Update_Sheets_Name()
    Dim Sh As Worksheet
   
    For Each Sh In ThisWorkbook.Worksheets
        If Sh.Range("A1").Text <> "" Then
            On Error Resume Next
            Sh.Name = Sh.Range("A1").Text
            If Err.Number = 1004 Then MsgBox "Geçersiz karakter tespit edildi!", vbCritical
            Err.Clear
            On Error GoTo 0
        End If
    Next
   
    MsgBox "Sayfa isimleri güncellenmiştir."
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@nongeyikm,

Alternatif olarak aşağıdaki kodu ThisworkBook bölümüne uygularsanız sayfalarda A1 hücresini değiştirdikçe sayfa isimleri değişecektir.

C++:
Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
    If Sh.Range("A1").Text <> "" Then
        On Error Resume Next
        Sh.Name = Left(Sh.Range("A1").Text, 31)
        If Err.Number = 1004 Then MsgBox "Geçersiz karakter tespit edildi!", vbCritical
        Err.Clear
        On Error GoTo 0
    End If
End Sub
 
Katılım
10 Haziran 2021
Mesajlar
12
Excel Vers. ve Dili
2007
Malesef hiç biri olmadı .
Tekrar anlatım .
Daily Plan adlı sayfanın I1 hucresindeki değer
Sayfa1 İn ismi olsun .

Yani Daily Plan sayfasinda I1 hucresindeki değer 10.02.2023 ise sayfa1 ismi 10.02.2023 olacak ve daha sonrasında Daily plan sayfasindaki tarih her değişmesinde sayfa1 in ismide değişsin . Bu kod lazım ...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Benim cevaplarım diğer üyemizin sorusu içindi.

Sizin sorunuzda önemli olan ismi değişecek sayfaların dizilimidir. Dizilimde aralarda ismi değişmeyecek sayfa var mı? Bunlar önem arz ediyor.
 
Katılım
10 Haziran 2021
Mesajlar
12
Excel Vers. ve Dili
2007
Benim cevaplarım diğer üyemizin sorusu içindi.

Sizin sorunuzda önemli olan ismi değişecek sayfaların dizilimidir. Dizilimde aralarda ismi değişmeyecek sayfa var mı? Bunlar önem arz ediyor.
Değişmeyecek sayfa yok . Sayfa1 den Sayfa 28 e kadar değişecek .
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Yani sayfa dizilimi aşağıdaki gibi mi?

Daily Plan / Sayfa1 / Sayfa2 .......
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İsmi değişecek sayfaların sıra numarası verdiğiniz dizilime göre 5 ten başlıyor.

Bu sebeple kod içinde No = 5 olarak kullandım.

Deneyiniz.

C++:
Option Explicit

Sub Update_Sheets_Name()
    Dim S1 As Worksheet, Sh As Worksheet
    Dim Rng As Range, No As Integer
    
    Set S1 = Sheets("Daily Plan")
    
    No = 5
    
    For Each Rng In S1.Range("I1:AJ1")
        If Rng <> "" Then
            On Error Resume Next
            Set Sh = Nothing
            Set Sh = Sheets(No)
            On Error GoTo 0
            If Not Sh Is Nothing Then Sh.Name = Left(Rng.Value, 31)
        End If
        No = No + 1
    Next
    
    Set S1 = Nothing
    
    MsgBox "Sayfa isimleri güncellenmiştir.", vbInformation
End Sub
 
Katılım
10 Haziran 2021
Mesajlar
12
Excel Vers. ve Dili
2007
İsmi değişecek sayfaların sıra numarası verdiğiniz dizilime göre 5 ten başlıyor.

Bu sebeple kod içinde No = 5 olarak kullandım.

Deneyiniz.

C++:
Option Explicit

Sub Update_Sheets_Name()
    Dim S1 As Worksheet, Sh As Worksheet
    Dim Rng As Range, No As Integer
   
    Set S1 = Sheets("Daily Plan")
   
    No = 5
   
    For Each Rng In S1.Range("I1:AJ1")
        If Rng <> "" Then
            On Error Resume Next
            Set Sh = Nothing
            Set Sh = Sheets(No)
            On Error GoTo 0
            If Not Sh Is Nothing Then Sh.Name = Left(Rng.Value, 31)
        End If
        No = No + 1
    Next
   
    Set S1 = Nothing
   
    MsgBox "Sayfa isimleri güncellenmiştir.", vbInformation
End Sub
Öncelikle çok teşekkürler . Fakat olmadı .
Deneme için I1 e tarih yazdım fakat herhangi bir değişiklik yok
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodu bir butona atayıp kullanabilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Uygulama yaptığınız örnek dosyayı paylaşırsanız deneme şansım olabilir.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,367
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Harici dosya barındırma sitelerine dosyanızı yükleyip linkini forumda paylaşabilirsiniz.
 
Katılım
7 Kasım 2005
Mesajlar
505
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Hayırlı sabahlar.

Çok teşekkürler Korhan Bey
 
Üst