hücreden sayfaya otomatik köprü oluşturma(vba)

Katılım
9 Haziran 2022
Mesajlar
23
Excel Vers. ve Dili
Türkçe 2016
merhabalar.
otomatik sayfa oluşturan bir kodum var. buna aynı zamanda köprüde oluşturacak bir kod eklemek istiyorum. örnekleri inceledim ama başarılı olamadım.
tıklama yapıldığında girilen veriye göre c sütununa sayfa adı yazılıyor ve aynı isimle sayfa oluşuyor. ben c sütunundaki veriler ile aynı isimli sayfaların köprülenmesini istiyorum. şimdiden teşekkürler.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,467
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim newSheetName As String
    Dim cell As Range
    Dim lastRow As Long
    
    ' C sütunundaki değişiklikleri kontrol et
    If Not Intersect(Target, Me.Range("C:C")) Is Nothing Then
        Application.EnableEvents = False
        
        ' Son satırı bul
        lastRow = Me.Cells(Me.Rows.Count, "C").End(xlUp).Row
        
        ' Her hücre için döngü
        For Each cell In Me.Range("C1:C" & lastRow)
            If cell.Value <> "" Then
                newSheetName = cell.Value
                
                ' Sayfa yoksa oluştur
                On Error Resume Next
                Set ws = ThisWorkbook.Worksheets(newSheetName)
                On Error GoTo 0
                
                If ws Is Nothing Then
                    Set ws = ThisWorkbook.Worksheets.Add
                    ws.Name = newSheetName
                    
                    ' Köprü oluştur
                    Me.Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:="'" & newSheetName & "'!A1", TextToDisplay:=newSheetName
                End If
            End If
        Next cell
        
        Application.EnableEvents = True
    End If
End Sub
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,467
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Bu kodu Excel dosyanızdaki ilgili sayfanın kod penceresine yerleştirin.
 
Katılım
9 Haziran 2022
Mesajlar
23
Excel Vers. ve Dili
Türkçe 2016
kodunuzu butona atayıp çalıştırdığımda
If Not Intersect(Target, Me.Range("C:C")) Is Nothing Then
satırında object required hatası veriyor.
ayrıca sayfa oluşturma ile ilgili kodlarım var. otomatik köprü işini halledebilirseniz benim için yeterli olacaktır.
"c sütunundaki veriler ile aynı isimli sayfaların köprülenmesi"
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,467
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
"Object required" hatası genellikle bir nesneye erişmeye çalışırken, o nesnenin tanımlı olmaması nedeniyle oluşur.


Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ws As Worksheet
    Dim newSheetName As String
    Dim cell As Range
    Dim lastRow As Long
    
    ' C sütunundaki değişiklikleri kontrol et
    If Not Intersect(Target, Me.Range("C:C")) Is Nothing Then
        Application.EnableEvents = False
        
        ' Son satırı bul
        lastRow = Me.Cells(Me.Rows.Count, "C").End(xlUp).Row
        
        ' Her hücre için döngü
        For Each cell In Me.Range("C1:C" & lastRow)
            If cell.Value <> "" Then
                newSheetName = cell.Value
                
                ' Sayfa yoksa oluştur
                On Error Resume Next
                Set ws = ThisWorkbook.Worksheets(newSheetName)
                On Error GoTo 0
                
                If ws Is Nothing Then
                    Set ws = ThisWorkbook.Worksheets.Add
                    ws.Name = newSheetName
                    
                    ' Köprü oluştur
                    Me.Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:="'" & newSheetName & "'!A1", TextToDisplay:=newSheetName
                End If
                
                Set ws = Nothing ' Her döngü sonunda ws'yi sıfırla
            End If
        Next cell
        
        Application.EnableEvents = True
    End If
End Sub
 
Katılım
9 Haziran 2022
Mesajlar
23
Excel Vers. ve Dili
Türkçe 2016
Kod:
Dim mysheet As String
Dim myrange As Range
Dim cell As Range
Set myrange = ThisWorkbook.Sheets("Sayfa1").Range("c5:c16")

For Each cell In myrange
                    
                    ' Köprü oluştur
    ThisWorkbook.Sheets("Sayfa1").Hyperlinks.Add Anchor:=cell, Address:="", SubAddress:="'" & cell.Value & "'!A1"
    Next cell
End Sub
hücre ile aynı adlı sayfa arasında köprü oluşturuyor.

bu kodu belki on kere yazdım. hep hata veriyordu. en son sizin kodlarınız üzerinde düzenlemeler yaptım bu sefer çalıştı.
ilginiz için teşekkür ederim.
 
Üst