• DİKKAT

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

Bul Değiştir Makrosundaki - özel karakteri sorunu

  • Konbuyu başlatan Konbuyu başlatan u.L.a.s
  • Başlangıç tarihi Başlangıç tarihi
Katılım
8 Eylül 2008
Mesajlar
950
Excel Vers. ve Dili
2016 İngilizce
Merhabalar

belirli bir hücrede yazılan bir veri içerisindeki belli bir kelimeyi farklı bir değerle değiştiren bir makrom var

bu makroda Nok-Nok Adsl verisini Fiberlink yapmasını istiyorum.

Fakat aradaki - ve boşluk Değeri yüzünden sanırım makro işlevi yerine getirmiyor.

Normalde "Adsl" şeklinde yazsam ve bunu Fiberlink değişsin istesem oluyor. ama aradaki - değeri ve boşluk karakterleri yüzünden bu değişim sağlanmıyor.

Bu durumu nasıl aşabilirim bilgi ve yardımlarınızı rica ederim

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C:C")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
Application.EnableEvents = False
bul = Array("[B][COLOR="Red"]Nok-Nok Adsl[/COLOR][/B]")
deg = Array("[B][COLOR="Magenta"]Fiberlink[/COLOR][/B]")
metin = Split(Target.Value, " ")
For b = LBound(metin) To UBound(metin)
    For c = LBound(bul) To UBound(bul)
        If InStr(1, metin(b), bul(c), vbTextCompare) = 1 Then
            metin(b) = deg(c)
            Exit For
        End If
    Next
Next
Target.Value = Join(metin, " ")
Application.EnableEvents = True
End Sub
 
Sayfada bulunan verinin içindeki boşluk karakterini kopyalayıp VBA bölümündeki aşağıdaki değşkendeki boşluk yerine yapıştırıp deneyin.

Kod:
bul = Array("Nok-Nok Adsl")

Boşluk karakterinin değerini KOD formülü ile bulabilirsiniz.

Boş bir sayfada A1 hücresine SPACE tuşu ile boşluk verin. B1 hücresine =KOD(A1) yazın, sonuç olarak size 32 değerini verecektir.

Aynı hücreye bu sefer ALT+0160 yazın. B1 hücresindeki formülünüz size 160 değerini verecektir.

Görsel olarak her ikiside boşluk gibi görünsede farklı sayısal değerlere sahiptir.

Sizin kod içindeki sıkıntıda bundan kaynaklanıyor olabilir.
 
Dediğiniz gibi veri içinden kopyalayıp makro koduna yapıştırdım ama olmadı

Örnek veri Şu şekilde
"xxx lokasyonu Nok-Nok Adsl Hat Tesisi"

Ben bu veriyi bu kodla şu hale gelmesini istiyorum
"xxx lokasyonu Fiberlink Hat Tesisi"

bir tane hücredeki bu =COde yazdım bana 85 diye bir değer verdi
 
Merhaba,

Bir taraftan kelimeleri boşluk ile ayırıp döngüye sokmuşsunuz, fakat diğer taraftan aradığınız değerde boşluk karakteri içeriyor. Bu yüzden tam olarak eşleşme yapamıyorsunuz.

Aşağıdaki gibi replace metodunu deneyin.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim eski, yeni, i As Byte
    
    If Intersect(Target, Range("C:C")) Is Nothing _
        Or Target.Cells.Count > 1 Then Exit Sub
    
    Application.EnableEvents = False
 
    eski = Array("Nok-Nok Adsl") 'arananlar
    yeni = Array("Fiberlink") 'yerine gelecekler

    For i = 0 To UBound(eski)
        Target.Value = Replace(Target.Value, eski(i), yeni(i))
    Next i
    
    Application.EnableEvents = True
    
End Sub

Aranan değerleri artırabilirsiniz düşüncesiyle yukarıdaki kod da dizi metodunu kullandım. Eğer tek aranan olacaksa dizi ve döngüye girmenize gerek yok. Aşağıdaki gibi de kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

    Dim eski As String, yeni As String
    
    If Intersect(Target, Range("C:C")) Is Nothing _
        Or Target.Cells.Count > 1 Then Exit Sub
    
    Application.EnableEvents = False
 
    eski = "Nok-Nok Adsl"
    yeni = "Fiberlink"
   
    Target.Value = Replace(Target.Value, eski, yeni)
  
    Application.EnableEvents = True
    
End Sub

.
 
Çok teşekkürler üstadım gönderdiğiniz kodlarla istediğim oldu.

emeğinize bilginize sağlık
 
Geri
Üst