• DİKKAT

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

Makro ile koşullu biçimlendirme

Katılım
15 Temmuz 2012
Mesajlar
2,802
Excel Vers. ve Dili
Ofis 2021 TR 64 Bit
Merhaba arkadaşlar hayırlı akşamlar

Ekte gönderdiğim sayfada makro ile koşullu biçimlendirme yapmaya çalıştım olmadı.

Yapmak istediğim Sayfa1'den Sayfa2'ye geçtiğimde kopyala yapıştır yapıyorum, ancak Sayfa 2'ye her geçtiğim için Sayfa1'deki koşullu biçimlendirmede aktarıldığı için koşullu biçimlendirmeden kuralları temizle kodunu ekledim, bu kuralın altına koşullu biçimlendirme kısmından hücrelere kenarlık eklemek istedim ancak makro kaydet ile yapamadım.

Yardım edecek arkadaşlara şimdiden teşekkürler.
 

Ekli dosyalar

Merhaba.

Sayfa2'nin kod bölümündeki aşağıdaki ile değiştiriniz.
Sonra da Sayfa2'de A:H sütunlarını seçerek koşullu biçimlendirmeyi söylediğiniz biçimde =$A1<>"" biçiminde istediğiniz renk/kenarlık vs olarak uygulayın.
Kod biçimlendirme ile ilgilenmez, sadece verileri aktarır.
Kod:
[B][FONT="Trebuchet MS"]Private Sub Worksheet_Activate()[/B]
Dim s1 As Worksheet: Set s1 = Sheets("Sayfa1")
Dim s2 As Worksheet: Set s2 = Sheets("Sayfa2")
[COLOR="Blue"]Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual[/COLOR]

sonsat = s1.Cells(65536, 1).End(3).Row
sonsut = s1.Cells(1, 1).End(2).Column
s2.Cells.ClearContents

For a = 1 To sonsat
    For b = 1 To sonsut
        s2.Cells(a, b) = s1.Cells(a, b)
    Next
Next

[COLOR="Red"]Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False[/COLOR]
[B]End Sub[/B][/FONT]
 
Son düzenleme:
Merhaba.

Sayfa2'nin kod bölümündeki aşağıdaki ile değiştiriniz.
Sonra da Sayfa2'de A:H sütunlarını seçerek koşullu biçimlendirmeyi söylediğiniz biçimde =$A1<>"" biçiminde istediğiniz renk/kenarlık vs olarak uygulayın.
Kod biçimlendirme ile ilgilenmez, sadece verileri aktarır.
Kod:
[B][FONT="Trebuchet MS"]Private Sub [COLOR="Red"]Worksheet_Activate[/COLOR]()[/B]
Dim s1 As Worksheet: Set s1 = Sheets("Sayfa1")
Dim s2 As Worksheet: Set s2 = Sheets("Sayfa2")

sonsat = s1.Cells(65536, 1).End(3).Row
sonsut = s1.Cells(1, 1).End(2).Column
s2.Cells.ClearContents


For a = 1 To sonsat
    For b = 1 To sonsut
        s2.Cells(a, b) = s1.Cells(a, b)
    Next
Next

[B]End Sub[/B][/FONT]

ömer bey şu linke bir bakarmısınız?
http://www.excel.web.tr/f48/sayy-retme-t151580/sayfa2.html#post826209
 
Ömer Bey hayırlı geceler ilginiz için çok teşekkür ediyorum, ellerinize sağlık süpersiniz Maşallah tam istediğim gibi olmuş.

Kodu kendi sayfama ilave ettiğimde çok yavaş çalışıyor, ayrıca benim istediğim gibi makro ile koşullu biçimlendirmeye kenarlık eklenebilir mi?
 
Bir önceki cevabımda yer alan koda ilave yaptım, tekrar kontrol ediniz.
Kopyala-yapıştır hızını elde etmek mümkün olmaz ama, yukarıdaki cevabımda yer alan
kod'a ilave ettiğim mavi ve kırmızı satırları ilave ederek test ediniz.
Veri yoğunluğuna göre değişir ama bir nebze olsun hız artışı sağlanacaktır.
 
Çok teşekkür ederim, tam istediğim gibi oldu Allah razı olsun, hayırlı geceler.
 
Merhaba arkadaşlar herkese hayırlı geceler.

Konu aynı konu olduğu için ve konuyu ben açtığım için tekrar konu açmadım.

Ekte gönderdiğim excel sayfasında makro ile koşullu biçimlendirmeye koşul ekliyor, benim istediğim bu koşulu çoğaltmak, sebebi bu aralığı seçip Ctrl+C kopyalayıp başka bir sayfaya yaptırıldığı zaman koşulda yapıştığından, makrolu koşullu biçimlendirme yapmak istiyorum.

Yardım edecek arkadaşlara şimdiden teşekkürler.

Kod:
Sub renk_ve_kenarlık()
    Cells.FormatConditions.Delete
    Range("A2:L500").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=1"
    With Selection.FormatConditions(1)
        .Borders.LineStyle = xlContinuous 'kenarlık
        .Interior.Color = 49407 'renklendirme
    End With
    Range("A1").Select
End Sub

Yukarıdaki kod içerisine aşağıdaki gibi devam edince hata veriyor. Bunu nasıl düzeltebiliriz?

Kod:
Sub renk_ve_kenarlık()
    Cells.FormatConditions.Delete
    Range("A2:L500").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=[COLOR="Red"]1[/COLOR]"
    With Selection.FormatConditions(1)
        .Borders.LineStyle = xlContinuous 
        .Interior.Color = [COLOR="red"]49407 [/COLOR]
    End With

    Range("A2:L500").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=[COLOR="red"]2[/COLOR]"
    With Selection.FormatConditions(1)
        .Borders.LineStyle = xlContinuous
        .Interior.Color = [COLOR="red"]3500[/COLOR] 
    End With

Range("A2:L500").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=[COLOR="red"]3[/COLOR]"
    With Selection.FormatConditions(1)
        .Borders.LineStyle = xlContinuous
        .Interior.Color = [COLOR="red"]2568[/COLOR]
    End With

    Range("A1").Select
End Sub
Renk kodlarını bilmediğim için değişik sayı yazdım, renklere denk gelen sayılarıda öğrenmek istiyorum.
Kod:
http://www.dosya.tc/server4/gkh0ny/Makro_ile_kosullu.xls.html
 

Ekli dosyalar

Son düzenleme:
Merhaba.
Sanırım istediğiniz bu.
Bilginize: Select olayını kullanmanıza gerek yok.
Kod:
Sub renk_ve_kenarlık()
    
[SIZE="2"][COLOR="blue"]'*** [B][COLOR="Red"]RENK KODLARI[/COLOR][/B] İÇİN AŞAĞIDAKİ ADRESE BAKABİLİRSİNİZ.[/COLOR]
[COLOR="Red"][B]'*** http://www.excel-pratique.com/en/vba/colors.php[/B][/COLOR][/SIZE]

[B][COLOR="Red"]alan[/COLOR][/B] = "A2:L500" [SIZE="2"][COLOR="Blue"]'*** SADECE BURADA DEĞŞİKLİK YAPARAK ALANBELİRLEYEBİLİRSİNİZ.
                 '*** "A2:L" & [A65536].End(3).Row   şeklinde yazarak,
                 '*** sadece kullanılan satırlara da uygulayabilirsiniz.[/COLOR][/SIZE] 

Cells.FormatConditions.Delete
    Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=1"
    Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(Range(alan).FormatConditions.Count).SetFirstPriority
    With Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(1)
        .Interior.ColorIndex = 3 [COLOR="Blue"][B]'renk[/B][/COLOR]
        .Borders.LineStyle = xlContinuous [B][COLOR="blue"]'kenarlık[/COLOR][/B]
    End With
    
    Range(alan).FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=2"
    Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(Range(alan).FormatConditions.Count).SetFirstPriority
    With Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(1)
        .Interior.ColorIndex = 4 [COLOR="Blue"][B]'renk[/B][/COLOR]
        .Borders.LineStyle = xlContinuous [B][COLOR="blue"]'kenarlık[/COLOR][/B]
    End With
    
    Range(alan).FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=3"
    Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(Range(alan).FormatConditions.Count).SetFirstPriority
    With Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(1)
        .Interior.ColorIndex = 5 [COLOR="Blue"][B]'renk[/B][/COLOR]
        .Borders.LineStyle = xlContinuous [B][COLOR="blue"]'kenarlık[/COLOR][/B]
    End With
    
    Range(alan).FormatConditions.Add Type:=xlExpression, Formula1:="=$A2=4"
    Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(Range(alan).FormatConditions.Count).SetFirstPriority
    With Range([B][COLOR="Red"]alan[/COLOR][/B]).FormatConditions(1)
        .Interior.ColorIndex = 6 [COLOR="Blue"][B]'renk[/B][/COLOR]
        .Borders.LineStyle = xlContinuous [B][COLOR="blue"]'kenarlık[/COLOR][/B]
    End With
End Sub
 
Son düzenleme:
Sayın Ömer Bey ilgi ve alakanız için Allah razı olsun.

Kodları uyguladığım zaman ekte gönderdiğim koşullu biçimlendirme kısmındaki formül kısmına =$A65530=1,=$A65530=2,=$A65530=3,=$A65530=4 yazdığı için A sütununda rakam yazdığım zaman alt bir kaç satır alt kısmı renklendiriyor.
Koşullu biçimlendirmede formül kısmına =$A2=1 bu şekilde yazmıyor.
 

Ekli dosyalar

  • Adsız.jpg
    Adsız.jpg
    107 KB · Görüntüleme: 4
Son düzenleme:
Elle yazmışsanız, formüllerin tümünde sağ tarafta "UYGULAMA HEDEFİ" kısmında belli ettiğiniz koşullu biçimlendirme alanının ilk hücresi olan A2 hücresini yazmalısınız, yani elle yazmışsanız =$A2 = 1 gibi, gönderdiğim kod'u kullanmışsanız, kodu açın ve F8 tuşuna tekrar tekrar basarak alan olarak adlandırdığım kısımı geçince fareyle alan kelimesinin üstüne geldiğinizde görünen alan nedir ona bakın, hata varsa orada fark edersiniz, sanırım "A2:L" & [A65536].End(3).Row kısmında hata yapmışsınız, ya =$A2:L500" şeklinde ya da ="A2:L" & [A65536].End(3).Row olarak bu kısmı düzeltin.
Ayrıca kod'u Modül yerine sayfanın kod bölümüne uygulayınız.

Modül'e uygulamışsanız, Range kelimelerinden önce Sheets("Sayfa1") gibi sayfa adını yazmalısınız.

Bahsettiğiniz bölüm koşul formülü değil ALAN için, koşul yine =$A2=1 gibi olmalı.
 
İsterseniz, uyguladığınız son kod'u burada tekrar paylaşın, bakayım.
 
Sayın Ömer Bey sizin göndermiş olduğunuz kodu komple modüle yapıştırıp çalıştırdım ekte gönderdiğim şekilde sonucu aldım, formül kısmı $A1=1 şeklinde başlıyor, oysaki kodda $A2=1 şeklinde yazdığı halde koşullu biçimlendirmeyi açtığımda $A1=1 şeklinde devam ediyor. Bundan dolayıda renklendirme alt satırdan başlıyor, sebebini çözemedim. Sayfayı ilk açtığımdada hata veriyor.
 

Ekli dosyalar

Son düzenleme:
Ben belgenizi açtığımda resimdeki gibi =$A2 şeklinde görüyorum ve sorun yok.
 

Ekli dosyalar

  • Pano01.jpg
    Pano01.jpg
    42.2 KB · Görüntüleme: 4
Sayın Ömer Bey sizin göndermiş olduğunuz kodu ilk sefer uyguladım çalıştı, sonradanda aşağıdaki ilk kodu sarıya boyuyor çalışmıyor,
Range(alan).FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
 
Bir de anlamadığım husus şudur.
Auto_Open şeklinde uygularsanız, açılışta gelen sayfa hagisiyse o sayfaya biçimlendirme uygulanır. Örneğin Sayfa2'de behrhangi bir işlem yapın ve belfeyi kaydedip kapatın. Bir sonraki açılışta Sayfa2 aktif olarak belge açılır ve bu kod bu sefer de aktif sayfa olan Sayfa2'de otomatik olarak uygulanır. Belki maksatınız da budur bilemiyorum tabi.
Bu durumu test ediniz.
Maksatınıza göre kod'u Modül'de tutarsınız (açılışta aktif olan sayfaya koşullu biçimlendirme uygulanır) ya da sayfanın kod bölümüne uygularsınız ve Activate kod'u ile otomatik veya düğme ile isteğe bağlı olarak biçimlendirme uygulanabilir.
 
Condi.tions kelimesinde arada boşluk (nokta olan yer) oluşmuş (önderdiğim kod'da yok) onu düzelterek, belgeyi kaydedip, kapatın açın isterseniz.
 
Sayın Ömer Bey ekte gönderdiğim sorunu alıyorum.
 

Ekli dosyalar

  • Örnek1.jpg
    Örnek1.jpg
    274.5 KB · Görüntüleme: 3
Selection kelimesini Range(alan) olarak değiştirin.

Aynısından her renk için var, hepsini düzeltmeniz lazım. Ben de atlamışım demekki.
 
Sayın Ömer Bey dediğiniz gibi yaptım, koşullu biçimlendirmeyi açtığımda bu seferde formül kısmı $A3=1 şeklinde devam ediyor, $A2=1 şeklinde devam etmiyor.
 
Geri
Üst