• DİKKAT

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

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
 
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
 
Sn. dede

Sayfa isimlerini, her sayfanın A1 hücresinden almasını istesem bu kod nasıl olur.
 
@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
 
@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
 
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 ...
 
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.
 
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 .
 
Yani sayfa dizilimi aşağıdaki gibi mi?

Daily Plan / Sayfa1 / Sayfa2 .......
 
İ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
 
İ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
 
Kodu bir butona atayıp kullanabilirsiniz.
 
Uygulama yaptığınız örnek dosyayı paylaşırsanız deneme şansım olabilir.
 
Harici dosya barındırma sitelerine dosyanızı yükleyip linkini forumda paylaşabilirsiniz.
 
Geri
Üst