Sayfadaki tüm formülleri değiştirme

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Aktif Sayfa içerinde tüm hücrelerdeki formül içinde, sayfa adı olarak "Sayfa1" geçen ifadeleri;
tek hareketle "Sayfa(2)" olarak değiştirecek bir kod arıyorum,

Not: Sadece formül içeriğinde değişiklik işlemi yapacak, normal hücre içinde yazan metinsel değerlere bakmayacak

Özetle verilerin alınacağı sayfa adı değiştirilmiş olacak,

teşekkürler,
iyi Akşamalr.
 

RBozkurt

𐱅𐰇𐰼𐰚
Altın Üye
Katılım
10 Ocak 2018
Mesajlar
686
Excel Vers. ve Dili
Microsoft Office 2024
Google Sheets
Altın Üyelik Bitiş Tarihi
19-12-2026
Ctrl + H
Aranan : Sayfa1!
Yeni Değer : Sayfa(2)!
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
Makro-VBA Soruları bölümüne sormuşsunuz.
Alternatif VBA çözümü:
C++:
Sub Test1()
    Dim rng As Range
    Dim Hcr As Range
    Set rng = ActiveSheet.UsedRange
    On Error GoTo son
    For Each Hcr In rng.Cells
        With Hcr
            .Find("Sayfa1!", , xlFormulas, xlPart).Replace "Sayfa1!", "Sayfa2!", xlPart
        End With
    Next Hcr
son:
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,
Makro-VBA Soruları bölümüne sormuşsunuz.
Alternatif VBA çözümü:
Hocam teşekkürler,
Kodu aşağıdaki gibi düzenledim,
Run-time error '91'
object variable or with block variable not set


şeklinde bir hata alıyorum

Sayfada Birleştirmiş hücre olması bu duruma neden olur mu?

iyi Çalışmalar.

Kod:
Sub Test1()
    Dim rng As Range
    Dim Hcr As Range
    Dim str1 As Variant
    Dim str2 As Variant
    
    str1 = "'BKG(1)'!"
    str2 = "'BKG(2)'!"
    
    Set rng = ActiveSheet.UsedRange
    
  ''  On Error GoTo son
    For Each Hcr In rng.Cells
        With Hcr
            .Find(str1, , xlFormulas, xlPart).Replace str1, str2, xlPart

        End With
    Next Hcr
son:
End Sub
 

Ekli dosyalar

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
On Error GoTo son satırını iptal etmemelisiniz. Kod bu haliyle döngünün sonunda durmaz ve değiştirmek için aramaya devam eder, bulamayınca da hata verir. On Error GoTo son satırı bunu önlemek için bilerek konulmuştur.
Farklı bir yaklaşımla, (FindNext) On Error GoTo son satırına gerek kalmayacaktır . Daha kısa olduğu için yukarıdaki kodu tercih etmiştim. Aşağıdaki kod bu yaklaşımla yazılmıştır

C++:
Sub Test()
With ActiveSheet.UsedRange
    Set c = .Find("Sayfa1!", , xlFormulas, xlPart)
        If Not c Is Nothing Then
            ilkAdres = c.Address
            Do
                .Replace "Sayfa1!", "Sayfa2!", xlPart
                Set c = .FindNext(c)
                If c Is Nothing Then GoTo son
            Loop While c.Address <> ilkAdres
        End If
son:
    End With
End Sub
 
Son düzenleme:

mustafa1205

Altın Üye
Katılım
23 Ekim 2010
Mesajlar
1,263
Excel Vers. ve Dili
Office 2016 / 64 Bit - Türkçe
Altın Üyelik Bitiş Tarihi
18-07-2026
Bunun için aşağıdaki yöntemi uygulayabilirsiniz.

Çalışmanıza formülleri almak istediğiniz yeni boş bir sayfa ekleyin. Adı "DATA1" olsun. Sonra formülleri aldığı sayfayı değiştirmek istediğiniz sayfanızı (formül içeren) mouse ile seçin ve tüm hücreleri seçili hale getirin.

CTRL+H (değiştir) menüsünü açın. Açılan menüden "Seçenekler" bölümündeki "Tüm hücre içeriğini eşleştir" seçeneğini pasif yapın. İlk kutucuğa "DATA" yazın. İkinci kutucuğa "DATA1" yazın ve tümünü değiştir komutunu ama çok çalıştırın.

Son olarak "DATA" isimli bozuk sayfanızı silin. "DATA1" isimli eklemiş olduğunu boş sayfada istediğiniz düzenlemeleri yapın ve son olarak sayfa adını dilediğiniz gibi değiştirin.

Bu şekilde formüllerinizi bozmadan bozuk sayfanızı yenilemiş olursunuz.
 
Son düzenleme:
Üst