Metin içindeki tarihi renklendirme

Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
İyi geceler diliyorum.
Bir hücrede bir kaç cümlelik metin içinde gömülü olan herhangi bir tarihi nasıl renklendirebiliriz? vba olarak kodu nasıl yazmalıyız yardımcı olur musunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,510
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Forumda characters ifadesi ile arama yapınız. Bu konuyla ilgili örnekler var.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Tamam @Korhan Ayhan üstadım. Yol gösterici yaklaşımınız için çok teşekkür ederim.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Malesef benim kod bilgim onca örnek içinde tarih cinsinden olan yazıyı renklendirecek şekilde düzenleme yapmaya yetmemektedir.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,662
Excel Vers. ve Dili
Microsoft 365 Tr-64
Cümleleriniz standart olup sadece tarihler mi farklı?
Cümlelerinizden (gizlilik gerektimeyecek şekilde) bir kaçını buraya yazarmısınız?
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
@ÖmerFaruk üstadım cümleler standart fakat tarihler dosyanın hazırlandığı döneme göre değişmektedir.
Örneğin A11 HÜCRESİNE
Kod:
Aşağıda durumu belirtilen okulumuz öğretmen ve yöneticilerine 16/12/2006 tarih ve 26378 sayılı Resmi Gazetede Yayımlanan 2006/11350 sayılı Milli Eğitim Bakanlığı Öğretmen ve Yöneticilerinin ders ücretlerine ilişkin esasları hakkındaki kararları hükümleri gereğince 06.09.2021 tarihinden itibaren görev olarak verilecek dersleri okutmalarını ve her saat için ek ders ücret göstergesi ile memur maaş katsayısına göre hesaplanarak ek ders ücretlerinin ödenmesini olurlarınıza arz ederim.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Bunun muadili bir cümle de A19 hücresinde bulunmaktadır
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,662
Excel Vers. ve Dili
Microsoft 365 Tr-64
Tarihlerinizin formatını aynı yapma şansınız var mı?
Mesela gg.aa.yyyy gibi
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Tabi ki bu mümkündür. bir sorun teşkil etmez
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
@ÖmerFaruk bey tarihlerden 01/01/2021 formatta olanı bırakıp 01.01.2021 formatında olanı renklendirse bu olabilir mi?. Böyle olursa benim değişiklik yaptığım tarihleri renklendirmiş değişiklik yapmayacağım tarihleri es geçmiş olur ki bu şekilde takibini yapmamı kolaylaştırmış olur.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,662
Excel Vers. ve Dili
Microsoft 365 Tr-64
Ben denemek için D2 hücresini kullandım. Kodların ilk satrındaki D2 kısmı için açıklama yazdım
C++:
Sub TarihRenklendir()
Dim Bak As Range, i As Integer, Dizi, StartPoz As Integer, Uzunluk As Integer
    Set Bak = Range("D2") 'Arzu ederseniz bu kısımda A1 yerine başka hücreyi refere edebilir ya da döngü içinde kullanabilirsiniz.
    Dizi = Split(Bak, " ")
    For i = 0 To UBound(Dizi) - 1
        If Len(Dizi(i)) - Len(Replace(Dizi(i), ".", "")) = 2 Then
        StartPoz = InStr(1, Bak, Dizi(i))
        Uzunluk = Len(Dizi(i))
        GoTo Jmp1
        End If
    Next i
    Exit Sub
Jmp1:
    Bak.Font.Bold = False
    Bak.Font.Color = vbBlack
    Bak.Characters(Start:=StartPoz, Length:=Uzunluk).Font.Bold = True
    Bak.Characters(Start:=StartPoz, Length:=Uzunluk).Font.Color = vbRed
End Sub
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,241
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Klasik Regular Expressions ile bir çözüm...

C#:
Public Sub Test()
    SetDateColor [a11]
End Sub

Private Sub SetDateColor(rng As Range)
    Static reg As Object, mc As Object, m As Object
   
    If reg Is Nothing Then Set reg = CreateObject("VBScript.RegExp")
   
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:0?[1-9]|[1-2][0-9]|3[0-1])\.(?:0?[1-9]|1[0-2])\.(?:19\d{2}|20\d{2}|0[0-9]|[1-9][0-9])"
   
    If reg.Test(rng) = False Then Exit Sub
   
    Set mc = reg.Execute(rng)
   
    For Each m In mc
        rng.Characters(m.FirstIndex + 1, m.length).Font.Color = vbRed
    Next
   
End Sub
 
Son düzenleme:
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
@ÖmerFaruk Üstadım oldu. Çok teşekkür ederim. Hatta böyle daha iyi oldu. Emeğinize sağlık. Varolun.
 
Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Klasik Regular Expressions ile bir çözüm...

C#:
Public Sub Test()
    SetDateColor [a11]
End Sub

Private Sub SetDateColor(rng As Range)
    Static reg As Object, mc As Object, m As Object
  
    If reg Is Nothing Then Set reg = CreateObject("VBScript.RegExp")
  
    reg.Global = True
    reg.MultiLine = True
    reg.Pattern = "(?:0?[1-9]|[1-2][0-9]|3[0-1])\.(?:0?[1-9]|1[0-2])\.(?:19\d{2}|20\d{2}|0[0-9]|[1-9][0-9])"
  
    If reg.Test(rng) = False Then Exit Sub
  
    Set mc = reg.Execute(rng)
  
    For Each m In mc
        rng.Characters(m.FirstIndex + 1, m.length).Font.Color = vbRed
    Next
  
End Sub
Hocam emeğiniz için teşekkürler. Bu vesile ile bir kaynağa sahip olmuş olduk
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,510
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif;

C++:
Option Explicit

Sub Color_The_Date_In_The_Text()
    Dim X As Long, Y As Long
    
    With Range("A1")
        .Font.Color = False
        .Font.Bold = False
        For X = 1 To Len(.Value)
            On Error Resume Next
            Y = WorksheetFunction.Search("??.??.????", .Value, IIf(Y = 0, 1, Y + 1))
            If Err.Number = 0 Then
                .Characters(Y, 10).Font.Color = vbRed
                .Characters(Y, 10).Font.Bold = True
            Else
                Err.Clear
                GoTo 10
            End If
        Next
    End With

10  MsgBox "Your transaction is complete.", vbInformation
End Sub
 

assenucler

Altın Üye
Katılım
19 Ağustos 2004
Mesajlar
3,521
Excel Vers. ve Dili
Ofis 365 TR 64 Windows 11 Home Single Language x64 TR
Altın Üyelik Bitiş Tarihi
29-05-2025
Sayın feylosof,

Açtığınız konu ilgimi çekti. Dosyanızın çok kısa da olsa, bir küçük örneğini eklemeniz mümkün mü?

İlgi ve yardımınız için teşekkür ederim.
 
Üst