• DİKKAT

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

İçinde Eğer ve Metin formülleri bulunan bir makro yazmak

Katılım
21 Mart 2013
Mesajlar
205
Excel Vers. ve Dili
Microsoft Excel Professional Plus 2016 - İngilizce
Merhabalar,

Yazmak istediğim bir makro var.

A sütununda, 1. satırdan 3500. satıra kadar tüm satırları sırası ile kontrol edecek,

EĞER, SOLDAN ilk 6 hane "Toplam" kelimesine veya "Genel " kelimesine eşitse, üzerinde bulunduğu satırı A sütunundan N sütununa kadar altı çift çizgili ve üstü tek çizgili yapsın aynı zamanda da satırdaki metinleri kalınlaştırsın istiyorum.

Gene aynı şekilde A sütununu kontrol ederek, hücrenin içerisinde "(boş)" metni içeren tüm satırları kaldırsın istiyorum.

Sizin yazdıklarınıza bakarak bu makro nasıl yazılır öğrenme niyetindeyim. Arzu ettiğim şekilde makroyu yazabilirsek hem bana yardımcı olur hem de bu tip makrolar nasıl yazılır öğretmiş olursunuz.

Teşekkürler.
 
Aşağıdaki kodları inceleyiniz:

Kod:
Sub geneltoplam()
son = Cells(Rows.Count, "A").End(3).Row
For i = son To 1 Step -1
    If Cells(i, "A") = "" Then
        Rows(i).Delete
    ElseIf WorksheetFunction.Proper(Left(Cells(i, "A"), 5)) = "Genel" Or _
            WorksheetFunction.Proper(Left(Cells(i, "A"), 6)) = "Toplam" Then
        With Range("A" & i & ":N" & i).Font
            .Name = "Calibri"
            .FontStyle = "Normal"
            .Size = 11
            .Strikethrough = True
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleDouble
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
            .Bold = True
        End With
    End If
Next

End Sub
 
Öncelikle çok teşekkür ederim,

Fakat boş satırların silinmesini istemiyorum, belgemde boş satır yok, pivot çektiğim için (boş) ile başlayan satırlar var ve başka bir satırda da Toplam (boş) diye bir satır var, ben bunların silinmesini istiyorum. İçinde "(boş)" geçen satır diyerek bunu kastettim.

Saygılar,
 
Bir de altı çift çizgili ve üstü tek çizgi şu şekilde gözüktü.

7NIUrB.jpg


Arada veri olmayan hücrelere de bu biçimin uygulanmasını istiyorum, görselde de görüleceği üzere asıl sorun altı çift çizgi üstü tek çizgi şeklinde makronun çalışmaması.
 
Aşağıdaki gibi deneyiniz:

Kod:
Sub geneltoplam()
son = Cells(Rows.Count, "A").End(3).Row
For i = son To 1 Step -1
    If Len(WorksheetFunction.Substitute(WorksheetFunction.Proper(Cells(i, "A")), "(Boş)", "")) <> Len(Cells(i, "A")) Then
        Rows(i).Delete
    ElseIf WorksheetFunction.Proper(Left(Cells(i, "A"), 5)) = "Genel" Or _
            WorksheetFunction.Proper(Left(Cells(i, "A"), 6)) = "Toplam" Then
        With Range("A" & i & ":N" & i).Font
            .Name = "Calibri"
            .FontStyle = "Normal"
            .Size = 11
            .Strikethrough = True
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleDouble
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
            .Bold = True
        End With
    End If
Next

End Sub
 
(boş) 'ların silinmesi meselesini çözdük fakat bir üstteki upload ettiğim resimde göreceğiniz üzere format çok kötü duruyor. Alt çift çizgi ve üste tek çizgi istiyorum ve bunu tüm satır boyuncu uygulayacak hücre hücre değil, hücre aralarında çizgi boşlukları olmayacak.
 
Alt çizgi ve üst çizgi derken ben yazının alt ve üstünün çizileceğini düşünmüştüm. Sanıyorum siz hücre kenarlığı şeklinde istiyorsunuz. Şöyle deneyin:

Kod:
Sub geneltoplam()
son = Cells(Rows.Count, "A").End(3).Row
For i = son To 1 Step -1
    If Len(WorksheetFunction.Substitute(WorksheetFunction.Proper(Cells(i, "A")), "(Boş)", "")) <> Len(Cells(i, "A")) Then
        Rows(i).Delete
    ElseIf WorksheetFunction.Proper(Left(Cells(i, "A"), 5)) = "Genel" Or _
            WorksheetFunction.Proper(Left(Cells(i, "A"), 6)) = "Toplam" Then
        Range("A" & i & ":N" & i).Font.Bold = True
        With Range("A" & i & ":N" & i).Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Range("A" & i & ":N" & i).Borders(xlEdgeBottom)
            .LineStyle = xlDouble
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThick
        End With
        
    End If
Next

End Sub
 
Alt çizgi ve üst çizgi derken ben yazının alt ve üstünün çizileceğini düşünmüştüm. Sanıyorum siz hücre kenarlığı şeklinde istiyorsunuz. Şöyle deneyin:

Kod:
Sub geneltoplam()
son = Cells(Rows.Count, "A").End(3).Row
For i = son To 1 Step -1
    If Len(WorksheetFunction.Substitute(WorksheetFunction.Proper(Cells(i, "A")), "(Boş)", "")) <> Len(Cells(i, "A")) Then
        Rows(i).Delete
    ElseIf WorksheetFunction.Proper(Left(Cells(i, "A"), 5)) = "Genel" Or _
            WorksheetFunction.Proper(Left(Cells(i, "A"), 6)) = "Toplam" Then
        Range("A" & i & ":N" & i).Font.Bold = True
        With Range("A" & i & ":N" & i).Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Range("A" & i & ":N" & i).Borders(xlEdgeBottom)
            .LineStyle = xlDouble
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThick
        End With
        
    End If
Next

End Sub

Tek kelime ile müthiş! Elinize sağlık çok teşekkür ediyorum.
 
Geri
Üst