• DİKKAT

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

Rectangle'ye bağlı formüller

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,181
Excel Vers. ve Dili
Ofis 2019 Türkçe
Rectangle 10 içersinde =exsport!B12
Rectangle 10 =exsport!b13
Rectangle 10 =exsport!b14
Rectangle 10 =exsport!b15 vs.
şeklinde devam eden formül bağlantılarım var.

Ben bu kutucuklar içerisine tek tek girip formülleri değiştirebiliyorum. Ben toplu halde =exsport!b12 "b" değerini "c" değeri ile bir seferde değiştirmek istiyorum.
Bu konuda bilgisi olan arkadaşlarımın yardımlarını bekliyorum.
 

Ekli dosyalar

  • rectangle.jpg
    rectangle.jpg
    41.8 KB · Görüntüleme: 14
Ctrl+ F yap Değiştir de değiştirilecek değeri altada istenen değeri yaz Tümünü değiştire tıkla.
 
Sn. Kemalist, şekillerdeki (rectangle) formüller için bu dediğiniz olmuyor. ilginiz için teşekkür ederim.
 
.

exsport sayfasındaki
C12
..........
.............
..........

değerleri

exsport sayfasının

B12
--
...
....

kopyalayın.

B12 ve altını kes, yapıştırla C12'ye taşıyın.


.
 
sn. idris hocam yarın işyerinde deneyip sonucu bildireceğim, olumlu sonuç verecek gibi. Teşekkür ederim.
 
Alternatif;

Kod:
Sub Makro()
    Dim Nesne As Shape
    With Sheets("Sayfa1")
        For Each Nesne In .Shapes
            If InStr(1, Nesne.DrawingObject.Formula, "!B") > 0 Then
                Nesne.DrawingObject.Formula = Replace(Nesne.DrawingObject.Formula, "!B", "!C")
            End If
        Next
    End With
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Örnek dosyayı ekte gönderiyorum

Korhan hocam, Uyarlamaya çalıştığım dosyada hata verdi, dosyayı ekte gönderiyorum, Bakabilirseniz sevinirim.
 

Ekli dosyalar

Son düzenleme:
Korhan hocam olayı şimdi çözdüm, şekillerin seçili olması gerekiyormuş, aynı kod içerisinde şekilleri seçili hale getirip kod çalıştırabilirsek daha mükemmel olacak.
 
Şekillerin seçili olmasına gerek yok.

Dosyanıza göre hangi formüllerin değişmesi gerekiyor.
 
Evet hocam, sonradan fark ettim seçili olmadan da çalışıyor, saadece şöyle bir durum var, b den c ye dönüştürdüğünü tekrar tersini yapmıyor, yani b den c ye döndürdüğün zaman c den b ye geri dönüştürmüyor hata veriyor, ancak değişmeyen formüller de başka değişikliklere devam edebiliyorsun, bu şekilde de idare eder. Saadece marakımdan sordum. Elinize sağlık. Sağolun.
 
Tahsin Bey,

Şartlar uygunsa B'yi "C" yapan kod neden tam tersini yapmasın. Bence atladığınız bir detay vardır. Sakin bir şekilde yeniden kontrol edin.
 
Hata mesajı

Korhan hocam, şu an eve geldim, ne yaptımsa hiç çalışmadı, ekteki hata mesajını alıyorum.
 

Ekli dosyalar

  • hata.jpg
    hata.jpg
    49.3 KB · Görüntüleme: 5
  • hata2.jpg
    hata2.jpg
    72.3 KB · Görüntüleme: 4
Aşağıdaki kodu deneyiniz.

Kod:
Sub Makro()
    Dim Nesne As Shape
    With Sheets("Fatih_Fatura2")
        For Each Nesne In .Shapes
            If Left(Nesne.Name, 9) = "Rectangle" Then
                If InStr(1, Nesne.DrawingObject.Formula, "exsport!B") > 0 Then
                    Nesne.DrawingObject.Formula = Replace(Nesne.DrawingObject.Formula, "!B", "!C")
                End If
            End If
        Next
    End With
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Korhan hocam kod çalıştı ama dediğim gibi harf değişikliği yaptığın harfi bir başka harfe çevirmiyor, örneğin AA harflerini X yaptım, aslında U yapmam gerekiyormuş, yaptığım X leri
U ya çevirirken hata veriyor, sonrada makro görevini yapıyor gibi görünse de değişikliği yapmıyor.
 
Üyemizin sistemine uzak bağlantı ile bağlanıp sorunu beraber inceledik. Makro bir şekilde şekillerdeki formüllere boşluk karakteri eklediği için sorun oluşmuş. TRIM fonksiyonu ile çözüm üretilmiştir.

Kod:
Sub Makro()
    Dim Nesne As Shape
    With Sheets("Fatih_Fatura2")
        For Each Nesne In .Shapes
            If Left(Nesne.Name, 9) = "Rectangle" Then
                If InStr(1, Nesne.DrawingObject.Formula, "exsport!B") > 0 Then
                    Nesne.DrawingObject.Formula = Replace(Trim(Nesne.DrawingObject.Formula), "!B", "!C")
                End If
            End If
        Next
    End With
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Seçili olan şekillerde değişiklik

Korhan hocam kodlarınız sorunsuz olarak çalıştı.
Eğer saadece seçili olan şekillerde değişiklik yapmak istersek kodunuzda nasıl bir değişiklik yapmamız gerekecek.
Ayrıca değişiklik yapılan şekillerin fontlarının 8 olmasını da sağlayabilirmiyiz

Kod:
Sub Makro2()
    Dim Nesne As Shape
    With Sheets("Fatih_Fatura2")
        For Each Nesne In .Shapes
            If Left(Nesne.Name, 9) = "Rectangle" Then
                If InStr(1, Nesne.DrawingObject.Formula, "exsport!H") > 0 Then
                    Nesne.Select
                    Nesne.DrawingObject.Formula = Replace(Trim(Nesne.DrawingObject.Formula), "!H", "!B")
                    Say = Say + 1
                End If
            End If
        Next
    End With
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & "Değişiklik sayısı : " & Say, vbInformation
End Sub
 
Seçili şekillerden kastınız belli hücre aralığındaki şekiller mi?
 
Evet hocam öylede diyebiliriz, yada şekilleri seçerek de olabilir.
 
Deneyiniz.

Mouse ile seçtiğiniz hücrelerde çalışır. Eğer alan belirlemek isterseniz Set Alan = Selection bölümündeki "Selection" ifadesi yerine Range("A1:C20") gibi aralık tanımlayabilirsiniz.

Kod:
Sub Makro()
    Dim Nesne As Shape, Alan As Range
    
    Set Alan = Selection
    
    For Each Nesne In ActiveSheet.Shapes
        If Not Intersect(Nesne.TopLeftCell, Alan) Is Nothing Then
            If Left(Nesne.Name, 9) = "Rectangle" Then
                If InStr(1, Nesne.DrawingObject.Formula, "exsport!H") > 0 Then
                    'Nesne.Select
                    Nesne.DrawingObject.Formula = Replace(Trim(Nesne.DrawingObject.Formula), "!H", "!B")
                    Nesne.DrawingObject.Font.Size = 8
                    Say = Say + 1
                End If
            End If
        End If
    Next
    
    Alan.Select
    
    If Say > 0 Then
        MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & "Değişiklik sayısı : " & Say, vbInformation
    Else
        MsgBox "İşleminiz tamamlanmıştır.", vbInformation
    End If
End Sub
 
Korhan hocam elinize sağlık, Range olarak alan belirttiğimde hata vermiyor, ancak Set Alan = Selection olarak belirttildiğinde bu satırda Run time error '13': hatası veriyor. Bilginiz olsun.
 
Geri
Üst