Sayfa İsminin Hücreden Okunması ve Dinamik Değişmesi

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
652
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
Herkese merhaba, aşağıdaki kodu, internetten aldım, ekteki tabloya uyguladım, doğru çalışıyor.
Ancak kodun çalıştığı hücre Dönem sayfasından çalışmakta, burası değiştiğinde ilgili hücre (XFD1) değişiyor ama sayfa adının değişmesi için bu hücrenin tıklanması gerekiyor. Makroyu, Dönem sayfasındaki veriler değiştiğinde, hücre isimleri de otomatik değişsin yapabilir miyiz.

Teşekkür ederim.

İdris Serdar üstadımızın, hocamızın, ağabeyimizin anısına saygıyla.
🙏

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("XFD1")) Is Nothing Then
ActiveSheet.Name = ActiveSheet.Range("XFD1")
End If
End Sub
 

Ekli dosyalar

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
652
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
Deneyebilir misiniz ?
İlginize teşekkür ederim.
Uyguladım ama olmadı.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    Dim periodSheet As Worksheet

    ' Hangi sayfanın Dönem sayfası olduğunu belirle
    Set periodSheet = ThisWorkbook.Sheets("Dönem")

    ' Dönem sayfasındaki veriler değiştiyse
    If Not Intersect(Target, periodSheet.UsedRange) Is Nothing Then
        ' Dönem sayfasındaki her hücreyi kontrol et
        For Each cell In periodSheet.UsedRange
            ' Eğer hücrenin değeri hücre adı olarak kullanılabilirse
            If cell.Value <> "" And cell.Row > 1 Then ' Satır 1 başlık satırı ise adı değiştirme
                ' Hücre adını belirle
                Dim cellName As String
                cellName = "A_" & Trim(cell.Value) ' Burada A_ kısmını değiştirebilirsiniz, örneğin: "Dönem_" şeklinde

                ' Hücre adını ve hedef hücreyi güncelle
                ThisWorkbook.Names.Add Name:=cellName, RefersToR1C1:="='" & periodSheet.Name & "'!" & cell.Address
            End If
        Next cell
    End If
End Sub
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,875
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Dönem sayfasının kod kısmına aşağıdaki kodu kopyalayın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2")) Is Nothing Then
        Sheet25.Name = Sheet25.Range("XFD1")
        Sheet28.Name = Sheet28.Range("XFD1")
    End If
End Sub
Dönem sayfasında B2 hücresinde bir değişiklik olduğunda sayfa isimleri değişecektir.

Dosyadaki diğer tüm kodları silin.
 

besen

Altın Üye
Katılım
23 Mart 2007
Mesajlar
652
Excel Vers. ve Dili
excel 2019
İngilizce
Altın Üyelik Bitiş Tarihi
03-12-2024
Merhaba.

Dönem sayfasının kod kısmına aşağıdaki kodu kopyalayın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2")) Is Nothing Then
        Sheet25.Name = Sheet25.Range("XFD1")
        Sheet28.Name = Sheet28.Range("XFD1")
    End If
End Sub
Dönem sayfasında B2 hücresinde bir değişiklik olduğunda sayfa isimleri değişecektir.

Dosyadaki diğer tüm kodları silin.
Harika.
Çok teşekkür ederim.
 

bosislermuduru

Altın Üye
Katılım
2 Temmuz 2018
Mesajlar
52
Excel Vers. ve Dili
2003 ,2007,2013,2019@PowerQuery
Altın Üyelik Bitiş Tarihi
14-05-2029
alternatif olması amacıyla donem sayfasına aşağıdaki kodları ekleyebilirsiniz

1- Sayfa ismi YılAySMM Şeklinde



C:
' 1 Değişkenleri Tanımlayalım

Dim oldValue As Variant

Public hucreguncellenmedenkihali As String

Public hucreguncellendiktensonrakihali As String




' 2 -  İlk Önce Hücrenin Güncellenmeden Önceki Adını Bilmememiz Lazım



Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Not Intersect(Target, Me.Range("b2")) Is Nothing Then

        hucreguncellenmedenkihali = Format(Range("b2").Value, "yyyy") & Format(Range("b2").Value, "mm") & "SMM"

 

     

     

    End If

End Sub





'3 Eğer Hücre Değiştirilidiğnde Eski Değer İle Aynı Adda Sayfa Varsa Sayfa Adını Değiştir

Private Sub Worksheet_Calculate()

' Test Etmek İçin MsgBox hucreguncellenmedenkihali

    hucreguncellendiktensonrakihali = Format(Range("b2").Value, "yyyy") & Format(Range("b2").Value, "mm") & "SMM"

   

     For Each ex In ActiveWorkbook.Worksheets

        If ex.Name = hucreguncellenmedenkihali Then

            sheetExists = True

            Exit For

        End If

    Next ex

 

    ' Eğer sayfa varsa adını değiştir

    If sheetExists Then

        ex.Name = hucreguncellendiktensonrakihali

' Test Etmek İçin       MsgBox "Sayfa adı " & hucreguncellendiktensonrakihali & " olarak değiştirildi."

    Else

    End If

    End Sub
 
Üst