• DİKKAT

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

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

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
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.
 
Ctrl + H
Aranan : Sayfa1!
Yeni Değer : Sayfa(2)!
 
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
 
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

  • 123.jpg
    123.jpg
    56.4 KB · Görüntüleme: 2
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:
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:
Geri
Üst