birde ayriyetten Ali DEMİR'in Ayşe ELMA'nın vb soyadından sonra gelen(') işaretinden sonra gelen yere soyadına uygun olarak in,nın,un ve şekilde küçük harflerle ek yazdırabilirmiyiz.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Public Sub Düzelt()
For i = 2 To [A65536].End(3).Row
Ad = ""
Soyad = ""
a = Split(Cells(i, "A"), " ")
For j = 0 To UBound(a) - 1
Ad = Trim(Ad & " " & a(j))
Next j
Soyad = Trim(a(UBound(a)))
Ad = Evaluate("=PROPER(""" & Ad & """)")
Soyad = Evaluate("=UPPER(""" & Soyad & """)")
SonKarakter = Right(Soyad, 1)
Select Case SonKarakter
Case "A", "I": Ek = "'nın"
Case "O", "U": Ek = "'nun"
Case "E", "İ": Ek = "'nin"
Case "Ö", "Ü": Ek = "'nün"
Case Else
SonKarakter = Left(Right(Soyad, 2), 1)
Select Case SonKarakter
Case "A": Ek = "'in"
Case "I": Ek = "'ın"
Case "O", "U": Ek = "'un"
Case "E", "İ": Ek = "'in"
Case "Ö", "Ü": Ek = "'ün"
Case Else
SonKarakter = Left(Right(Soyad, 3), 1)
Select Case SonKarakter
Case "A": Ek = "'ın"
Case "I": Ek = "'ın"
Case "O", "U": Ek = "'un"
Case "E", "İ": Ek = "'in"
Case "Ö", "Ü": Ek = "'ün"
End Select
End Select
End Select
Cells(i, "A") = Ad & " " & Soyad & Ek
Next i
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Son
If Intersect(Target, [[B][COLOR=red]H12[/COLOR][/B]]) Is Nothing Then Exit Sub
Sonuç = ""
Ad = ""
Soyad = ""
a = Split(Target, " ")
For j = 0 To UBound(a) - 1
Ad = Trim(Ad & " " & a(j))
Next j
Soyad = Trim(a(UBound(a)))
Ad = Evaluate("=PROPER(""" & Ad & """)")
Soyad = Evaluate("=UPPER(""" & Soyad & """)")
SonKarakter = Right(Soyad, 1)
Select Case SonKarakter
Case "A", "I": Ek = "'nın"
Case "O", "U": Ek = "'nun"
Case "E", "İ": Ek = "'nin"
Case "Ö", "Ü": Ek = "'nün"
Case Else
SonKarakter = Left(Right(Soyad, 2), 1)
Select Case SonKarakter
Case "A": Ek = "'ın"
Case "I": Ek = "'ın"
Case "O", "U": Ek = "'un"
Case "E", "İ": Ek = "'in"
Case "Ö", "Ü": Ek = "'ün"
Case Else
SonKarakter = Left(Right(Soyad, 3), 1)
Select Case SonKarakter
Case "A": Ek = "'ın"
Case "I": Ek = "'ın"
Case "O", "U": Ek = "'un"
Case "E", "İ": Ek = "'in"
Case "Ö", "Ü": Ek = "'ün"
End Select
End Select
End Select
Application.EnableEvents = False
Sonuç = Ad & " " & Soyad & Ek
With Target
.Value = Sonuç
Application.EnableEvents = True
End With
Range("D:D").EntireColumn.AutoFit
Range("H:H").EntireColumn.AutoFit
Son:
End Sub
Yukarıdaki makro çalışıyor hem de tam istediğim gibi, ancak belirtilen hücreye yazdığınız ad soyadı delet ile sildiğiniz zaman hata veriyor. end debug geliyor. Sonra da ad soyadı küçük büyük şeklinde yazmıyor yani makro devre dışı oluyor. Buna da bir çözüm üretirseniz memnun olurum. Bir de büyük harfle yazılan I harfini İ olarak yazıyor. Her ne kadar bu konu yıllar önce açılmış olsa da bakarsanız sevinirim. Şimdiden teşekkür ediyorum.yazdığınız anda dönüştürülmesini istiyorsanız;
Private Sub Worksheet_Change(ByVal Target As Range)
Set IntersectRng = Application.Intersect(Target, Range("A:Z"))
If Not IntersectRng Is Nothing Then
Target = WorksheetFunction.Proper(Trim(Target))
z = StrReverse(Target)
x = InStr(1, z, " ")
If x > 0 Then
y = Mid(z, 1, InStr(1, z, " "))
For i = 1 To Len
c = c & WorksheetFunction.Proper(Mid(y, i, 1))
Next
Target = Mid(Target, 1, Len(Target) - x) & StrReverse(c)
End If
End
End If
Set IntersectRng = Nothing
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Son
If Intersect(Target, Range("G1:G65000")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target = WorksheetFunction.Proper(Target)
If InStr(1, Target, " ") > 0 Then
Veri_1 = Split(Target, " ")
Veri_2 = Replace(Target, Veri_1(UBound(Veri_1)), "")
Target = Veri_2 & UCase(Replace(Replace(Veri_1(UBound(Veri_1)), "ı", "I"), "i", "İ"))
End If
Son: Application.EnableEvents = True
End Sub