Seçilen Alanda Bir Metni Başka Bir Metinle Değiştir - Microsoft Excel


InputBox aracılığıyla değiştirilecek metin ve yerine getirilecek metin bilgileri verildiğinde seçilen alanı kontrol edip değiştirme işlemi yapıyor.

Kod


Option Explicit

Sub SecilenAlandaBirMetniBaskaBirMetinleDegistir()
    Dim i                  As Integer
    Dim degistirilecek     As String
    Dim yerine_getirilecek As String
    Dim firstAddress       As String
    Dim c                  As Object
    
    degistirilecek = _
        InputBox("Değiştirilecek ifadeyi girin:", "DEĞER GİRİŞİ 1")
            
    yerine_getirilecek = _
        InputBox("Yerine getirilecek ifadeyi girin:", "DEĞER GİRİŞİ 2")
    
    
    With Selection
        Set c = .Find(degistirilecek, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            
            Do
                c.Value = _
                    Application.WorksheetFunction.Substitute( _
                    c.Value, degistirilecek, yerine_getirilecek)
                            
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
End Sub

Kod (Açıklamalı)


Option Explicit

Sub SecilenAlandaBirMetniBaskaBirMetinleDegistir()
    '--------------------------------------------------
    'Değişkenler
    '--------------------------------------------------
    Dim i                  As Integer
    Dim degistirilecek     As String
    Dim yerine_getirilecek As String
    Dim ilkAdres       As String
    Dim alan               As Object
    
    '--------------------------------------------------
    'Değiştirilecek metni InputBox ile
    'al ve değişkene aktar.
    '--------------------------------------------------
    degistirilecek = _
        InputBox("Değiştirilecek ifadeyi girin:", "DEĞER GİRİŞİ 1")
    
    '--------------------------------------------------
    'Yerine getirilecek metni InputBox
    'ile al ve değişkene aktar.
    '--------------------------------------------------
    yerine_getirilecek = _
        InputBox("Yerine getirilecek ifadeyi girin:", "DEĞER GİRİŞİ 2")
    
    '--------------------------------------------------
    'Seçilen alan üzerinde işlem yap.
    '--------------------------------------------------
    With Selection
        
        '--------------------------------------------------
        'Alanların (Range) değerlerinde değiştirilecek
        'metni içerenleri bul ve alan isimli değişkene ata.
        '--------------------------------------------------
        Set alan = .Find(degistirilecek, LookIn:=xlValues)
        
        '--------------------------------------------------
        'Eğer değiştirilecek veriyi içeren
        'alan bulunduysa işlem yap.
        '--------------------------------------------------
        If Not alan Is Nothing Then
            '--------------------------------------------------
            'Elenmiş Range içeriğinin
            'ilk hücresinin adresini al.
            '--------------------------------------------------
            ilkAdres = alan.Address
            
            '--------------------------------------------------
            'Döngüye başla.
            '--------------------------------------------------
            Do
            
                '--------------------------------------------------
                'Metin değiştirme işlemini yap.
                '--------------------------------------------------
                alan.Value = _
                    Application.WorksheetFunction.Substitute( _
                    alan.Value, degistirilecek, yerine_getirilecek)
                            
                '--------------------------------------------------
                'Sonraki elenmiş alana geç.
                'FindNext metodu ile bize verilen alanı
                'alan isimli değişkene ata.
                '--------------------------------------------------
                Set alan = .FindNext(alan)
                
                
            '--------------------------------------------------
            'Değiştirilecek veiyi içeren alanlar bitene
            'kadar ve döngüdeki alan bilgisi ilkAdres
            'değişkenindeki alan bilgisine eşit değilse
            'döngüye devam et.
            '--------------------------------------------------
            Loop While Not alan Is Nothing And alan.Address <> ilkAdres
        End If
    End With
End Sub

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba