..:: Biçim ve Formülleri Temizleme ::..

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhabalar !...

Makro kod işini biraz olsun öğrenene kadar sizlerden rica etmek durumundayım.

Ekteki belgede ihtiyacı belirttim.

ANASAYFA'da belirteceğim hücre aralıklarındaki;

-- biçimlendirmelerin temizlenmesini,
-- formül sonuçlarının değer'e dönüştürülmesini,

sağlayacak makro koda ihtiyacım var.

Kod'un, ANASAYFA'daki ilgili satırda yer alan veri doğrulamada "EVET" seçildiğinde tetiklenmesi gerekiyor.
 

Ekli dosyalar

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,405
Excel Vers. ve Dili
2007 Türkçe
Aşağıdaki kodu dener misiniz?
Anasayfa sayfasının kod bölümüne kopyalayınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("R4:R34")) Is Nothing Then Exit Sub
On Error Resume Next
If Target.Value = "EVET" Then
    sat = Target.Row
    Set sayfa = Sheets(Cells(sat, "I").Text)
    For Each basv In Range("U" & sat & ":V" & sat)
        sayfa.Range(basv).ClearFormats
    Next

    For Each basv In Range("W" & sat & ":X" & sat)
        sayfa.Range(basv).Value = sayfa.Range(basv).Value
    Next
End If
End Sub
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Ömer bey, örnek kodları dosyanıza uyarlayınız.
Kod:
[a1:a20].Value = [a1:a20].Value
[a1:a20].ClearFormats
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Aşağıdaki kodu dener misiniz?
Anasayfa sayfasının kod bölümüne kopyalayınız.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
....................
End Sub
Sayın mucit, kodu belgeye uyguladım ancak herhangi bir değişiklik oluşmadı.

Ömer bey, örnek kodları dosyanıza uyarlayınız.
Kod:
[a1:a20].Value = [a1:a20].Value
[a1:a20].ClearFormats
Sayın Tiken verdiğiniz kodu Sayın mucit'in yazdığı kodda değişiklik yapmak için mi kullanacağım, bilemedim? Eğer öyle ise hangi satıra eklemem ya da hangi satırı değiştirmem gerekiyor acaba?
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,405
Excel Vers. ve Dili
2007 Türkçe
Aşağıdaki kodları dener misiniz?
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("R4:R34")) Is Nothing Then Exit Sub
On Error Resume Next
If Target.Value = "EVET" Then
    sat = Target.Row
    For Each syf In Sheets
        If Replace(syf.Name, """", "") = Cells(sat, "I").Value Then Set sayfa = syf
    Next
    
    For Each basv In Range("U" & sat & ":V" & sat)
        sayfa.Range(basv).ClearFormats
    Next

    For Each basv In Range("W" & sat & ":X" & sat)
        sayfa.Range(basv).Value = sayfa.Range(basv).Value
    Next
End If
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Aşağıdaki kodları dener misiniz?
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
..................
End Sub
Sayın mucit ilgi ve destek için teşekkürler formüllerin değere dönüşmesi tamam ancak, hücre birleştirmelerinde birleştirilmiş hücrelerin tam olarak veya fazlasıyla yazılması halinde format temizleniyor. Böyle yazılmazsa format değişmiyor.

Örneğin 4 isimli sayfa için sadece C5 veya C5:F5 gibi birleştirilmiş hücrelerin tümünü kapsamayan aralık veya hücre adresi yazıldığında formatta hiç bir değişiklik olmuyor.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,405
Excel Vers. ve Dili
2007 Türkçe
Evet, çünkü;
birleştirilmiş bir hücrenin bir parçası değiştirilemez.
Bir de aşağıdaki kodları deneyiniz. Önce seçip sonra formatını değiştirelim.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("R4:R34")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set ana = ActiveSheet
On Error Resume Next
If Target.Value = "EVET" Then
    sat = Target.Row
    For Each syf In Sheets
        If Replace(syf.Name, """", "") = ana.Cells(sat, "I").Value Then Set sayfa = syf
    Next
    sayfa.Select
    For Each basv In ana.Range("U" & sat & ":V" & sat)
        sayfa.Range(basv).Select
        Selection.ClearFormats
    Next

    For Each basv In ana.Range("W" & sat & ":X" & sat)
        sayfa.Range(basv).Value = sayfa.Range(basv).Value
    Next
End If
ana.Select
Application.ScreenUpdating = True
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Teşekkürler !...

Evet, çünkü;
birleştirilmiş bir hücrenin bir parçası değiştirilemez.
Bir de aşağıdaki kodları deneyiniz. Önce seçip sonra formatını değiştirelim.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
.......................
End Sub
Birleştirilmiş hücreyle ilgili söylediğinizi elbette biliyorum, sadece birleştirilmiş hücreye bir formülde başvuru yapıldığında birleştirilmiş hücre aralığının sol üstteki hücresinin adresini yazmak yeterli olduğundan ya da birleştirilmiş hücre seçildiğinde formül çubuğunun solundaki AD alanında o şekilde sol üstteki hücre adı göründüğündün öyle söyledim.

Teşekkürler ediyorum. İşlem tamamdır.
 
Üst