Siteden aldığım Seçili Satırı Renklendirme Makrosu

Katılım
16 Ekim 2007
Mesajlar
87
Excel Vers. ve Dili
Excel 2007
merhaba arkadaşlar aşağıdaki macro çok iyi çalışıyor fakat bana göre bir iki ufak düzeltme olursa daha güzel olacak.

exceli kapatıp açtığımda en son hangi satır ve sütundaysa o sütün macrodaki renk kodu olan 6 yani sarı olarak kayıt edilmiş olarak açılıyor ve düzeltemiyorsunuz. düzeltmek değilde renkli olarak kayıt etmesini istemiyorum.

ayrıca sadece A ile T arasında renklendirme yapmasını istiyorum

belirttiğim bu iki konuyu hallettmek için macroya nasıl bir ilave kod yazılmalıdır acaba? yardımcı olmanızı rica ederim.


Bir ilave; takılmadan çalışması için de yapılabilecek birşey varmıdır? imleci klavyedeki oklarını kullanarak sağa, sola, yukarı, aşağı hareket ettirdiğimde bariz takılmalar oluyor.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static EskiHucre As Range ', EskiHucre2 As Range
Static SatirRenkDizisi(256) As Integer
'Static SutunRenkDizisi(65536) As Long
Dim bulent As Integer
'Dim excelce As Long
If Not EskiHucre Is Nothing Then
For bulent = 1 To 256
Cells(EskiHucre.Row, bulent).Interior.ColorIndex = SatirRenkDizisi(bulent)
Next bulent
' For excelce = 1 To 65536
' Cells(excelce, EskiHucre2.Column).Interior.ColorIndex = SutunRenkDizisi(excelce)
' Next excelce
End If
For bulent = 1 To UBound(SatirRenkDizisi)
SatirRenkDizisi(bulent) = Cells(ActiveCell.Row, bulent).Interior.ColorIndex
Next bulent
'For excelce = 1 To UBound(SutunRenkDizisi)
' SutunRenkDizisi(excelce) = Cells(excelce, ActiveCell.Column).Interior.ColorIndex
'Next excelce
ActiveCell.EntireRow.Interior.ColorIndex = 6
'ActiveCell.EntireColumn.Interior.ColorIndex = 6
Set EskiHucre = ActiveCell.EntireRow
'Set EskiHucre2 = ActiveCell.EntireColumn
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Alternatif olarak koşullu biçimlendirme ile yapılmıştır.

kod A2:T50 arası çalışmaktadır.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("[COLOR="Red"]A2:T50[/COLOR]").FormatConditions.Delete
If Intersect(Target, Range([COLOR="red"]"A2:T50[/COLOR]")) Is Nothing Then Exit Sub
With Range("[COLOR="red"]A[/COLOR]" & Target.Row, "[COLOR="red"]T[/COLOR]" & Target.Row)
.FormatConditions.Add Type:=2, Formula1:=-1
.FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub

 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

İkinci seçenek olsun, kendim için hazırladığım kodlar.

1. satırın başlık ve A sütunun ilk dolu sütun olduğu kabul edilmiştir.

Sütün sayısı ile sabit değildir.

Public Sat As Long
Public SonKolon As Integer
Public secim As Range

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Sat = Target.Row Then
        Exit Sub
    Else
        Sat = Target.Row
    End If
    Set secim = Range("A1").CurrentRegion
    SonKolon = secim.Columns.Count
    Cells.Interior.ColorIndex = xlNone
    If Target.Row = 1 Then Exit Sub
    Range(Cells(Target.Row, "A"), Cells(Target.Row, SonKolon)).Interior.ColorIndex = 6
    
End Sub
 
Katılım
16 Ekim 2007
Mesajlar
87
Excel Vers. ve Dili
Excel 2007
Alternatif olarak koşullu biçimlendirme ile yapılmıştır.

kod A2:T50 arası çalışmaktadır.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("[COLOR="Red"]A2:T50[/COLOR]").FormatConditions.Delete
If Intersect(Target, Range([COLOR="red"]"A2:T50[/COLOR]")) Is Nothing Then Exit Sub
With Range("[COLOR="red"]A[/COLOR]" & Target.Row, "[COLOR="red"]T[/COLOR]" & Target.Row)
.FormatConditions.Add Type:=2, Formula1:=-1
.FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub


Kod sayfasına kopyala yapıştır yaptım ama çalışmadı biryerde hatamı yapıyorum acaba? koşulu biçimlendirmenin formül kısmına mı eklemeliyim?
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Kod sayfasına kopyala yapıştır yaptım ama çalışmadı biryerde hatamı yapıyorum acaba? koşulu biçimlendirmenin formül kısmına mı eklemeliyim?
Profilinizde excelin hangi sürümünü kullandığınız yazmıyor bunu düzeltin

kod ofis 2003 ve ofis 2007 de çalışıyor
 
Katılım
16 Ekim 2007
Mesajlar
87
Excel Vers. ve Dili
Excel 2007
Merhaba,

İkinci seçenek olsun, kendim için hazırladığım kodlar.

1. satırın başlık ve A sütunun ilk dolu sütun olduğu kabul edilmiştir.

Sütün sayısı ile sabit değildir.

Public Sat As Long
Public SonKolon As Integer
Public secim As Range

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Sat = Target.Row Then
        Exit Sub
    Else
        Sat = Target.Row
    End If
    Set secim = Range("A1").CurrentRegion
    SonKolon = secim.Columns.Count
    Cells.Interior.ColorIndex = xlNone
    If Target.Row = 1 Then Exit Sub
    Range(Cells(Target.Row, "A"), Cells(Target.Row, SonKolon)).Interior.ColorIndex = 6
    
End Sub

elinize sağlık çok güzel çalışıyor fakat çok yavaş imleci hareket ettirince bir süre bekletiyor sonra satır değiştiriyor, daha hızlı çalışması için yapacak birşeyler varmıdır?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Dosya büyük olduğunda ilk verdiğim kodlarda sıkıntı oluşabilirdi.
Aşağıdaki kodlarda bu sorunu hallettiğimi düşünüyorum.

Deneyip sonucu bildirirseniz sevinirim.

Kod:
Public Sat  As Long
Public Kol  As Integer

Private Sub Worksheet_Activate()

    Cells.Interior.ColorIndex = xlNone
    Range("A2").Activate
    Sat = 2
    Kol = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    Range(Cells(Sat, "A"), Cells(Sat, Kol)).Interior.ColorIndex = 6
    
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Sat = Target.Row Then
        Exit Sub
    Else
        If Sat = 0 Then Sat = Target.Row
        Range(Cells(Sat, "A"), Cells(Sat, Kol)).Interior.ColorIndex = xlNone
        Sat = Target.Row
    End If
    If Target.Row = 1 Then Exit Sub
    Range(Cells(Target.Row, "A"), Cells(Target.Row, Kol)).Interior.ColorIndex = 6
    
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
görsel video
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
8 nolu mesaj için bir düşünceniz var mı?
 
Katılım
16 Ekim 2007
Mesajlar
87
Excel Vers. ve Dili
Excel 2007
Alternatif olarak koşullu biçimlendirme ile yapılmıştır.

kod A2:T50 arası çalışmaktadır.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("[COLOR="Red"]A2:T50[/COLOR]").FormatConditions.Delete
If Intersect(Target, Range([COLOR="red"]"A2:T50[/COLOR]")) Is Nothing Then Exit Sub
With Range("[COLOR="red"]A[/COLOR]" & Target.Row, "[COLOR="red"]T[/COLOR]" & Target.Row)
.FormatConditions.Add Type:=2, Formula1:=-1
.FormatConditions(1).Interior.ColorIndex = 6
End With
End Sub



Halit bey mevcut excelimde işe yaramadı ama yeni bir excel açtığımda oluyor ama onda da şöyle bir uyarı veriyor

Gizlilik uyarısı: Bu belge makrolar, activex denetimleriXML genişletme paketi bilgileri veya WEB bileşenleri içeriyor. Bunlar belge denetçisi tarafından kaldırılamayan kişisel bilgiler olabilir.
 
Katılım
16 Ekim 2007
Mesajlar
87
Excel Vers. ve Dili
Excel 2007
Merhaba,

Dosya büyük olduğunda ilk verdiğim kodlarda sıkıntı oluşabilirdi.
Aşağıdaki kodlarda bu sorunu hallettiğimi düşünüyorum.

Deneyip sonucu bildirirseniz sevinirim.

Kod:
Public Sat  As Long
Public Kol  As Integer

Private Sub Worksheet_Activate()

    Cells.Interior.ColorIndex = xlNone
    Range("A2").Activate
    Sat = 2
    Kol = Cells.Find("*", , , , xlByColumns, xlPrevious).Column
    Range(Cells(Sat, "A"), Cells(Sat, Kol)).Interior.ColorIndex = 6
    
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Sat = Target.Row Then
        Exit Sub
    Else
        Range(Cells(Sat, "A"), Cells(Sat, Kol)).Interior.ColorIndex = xlNone
        Sat = Target.Row
    End If
    If Target.Row = 1 Then Exit Sub
    Range(Cells(Target.Row, "A"), Cells(Target.Row, Kol)).Interior.ColorIndex = 6
    
End Sub

Necdet bey bunu görmemişim kusura bakmayın. Denedim aşağıdaki kodla ilgili bir uyarı verdi.

Range(Cells(Sat, "A"), Cells(Sat, Kol)).Interior.ColorIndex = xlNone
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
ofis 2007 için görsel video

 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Necdet bey bunu görmemişim kusura bakmayın. Denedim aşağıdaki kodla ilgili bir uyarı verdi.

Range(Cells(Sat, "A"), Cells(Sat, Kol)).Interior.ColorIndex = xlNone
kodları ilk defa denerken verir o hatayı.

sayfa değiştirip kullanırsanız ve sonraki kullanımlarda hata vermez.

Not : Yine de 8. mesajdaki kodlar yenilendi.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Aşağıdaki linkte daha önce bu konuda örnekler hazırlanmıştı. İnceleyiniz. Belki işinize yarayabilir.

Satır Renklendirme
 
Üst