Ad ve Soyadlar...

Katılım
21 Kasım 2004
Mesajlar
87
Merhaba,

Kişilerin ad ve soyadlarını hücreye küçük harfle yazıp enter ladıktan sonra şu şekilde olmasını sağlayabilirmiyiz... (İlgili sayfanın Worksheet_Change olayında)

Ã?rnek: Ali AKTAÞ, veya kişi çift isimli olabilir. Ã?rnek2: Mehmet Ali AKTAÞ
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merhaba;

Bir deneyin bakalım işinize yarayacak mı ?

[vb:1:09d4dc77ee]Private Sub Worksheet_Change(ByVal Target As Range)
Target = Trim(Target)
x = InStr(1, Target, " ")
If x > 0 Then
Target = WorksheetFunction.Proper(Target)
y = Mid(Target, x + 1, 98)
Target = WorksheetFunction.Substitute(Target, y, UCase(y))
End If
End
End Sub
[/vb:1:09d4dc77ee]
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu işin sadece A sütununda olmasını isterseniz;

[vb:1:cc127420b5]Private Sub Worksheet_Change(ByVal Target As Range)
Set IntersectRng = Application.Intersect(Target, Range("A:A"))
If Not IntersectRng Is Nothing Then
Target = Trim(Target)
x = InStr(1, Target, " ")
If x > 0 Then
Target = WorksheetFunction.Proper(Target)
y = Mid(Target, x + 1, 98)
Target = WorksheetFunction.Substitute(Target, y, UCase(y))
End If
End
End If
Set IntersectRng = Nothing
End Sub
[/vb:1:cc127420b5]
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Sayın Raider,

denedim çok güzel olmuş elinize sağlık, yalnız küçük "I" harfinde sorun var, onu büyük yazmıyor
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Necdet_Yesertener' Alıntı:
denedim çok güzel olmuş elinize sağlık, yalnız küçük "I" harfinde sorun var, onu büyük yazmıyor
Merhaba;

Bir de bu şekliyle deneyin isterseniz ...

[vb:1:6e72f7f742]Private Sub Worksheet_Change(ByVal Target As Range)
Set IntersectRng = Application.Intersect(Target, Range("A:A"))
If Not IntersectRng Is Nothing Then
Target = Trim(Target)
x = InStr(1, Target, " ")
If x > 0 Then
Target = WorksheetFunction.Proper(Target)
y = Mid(Target, x + 1, 98)
For i = 1 To Len(y)
c = c & WorksheetFunction.Proper(Mid(y, i, 1))
Next
Target = WorksheetFunction.Substitute(Target, y, c)
End If
End
End If
Set IntersectRng = Nothing
End Sub
[/vb:1:6e72f7f742]
 
Katılım
21 Kasım 2004
Mesajlar
87
Sayın Raider, çok teşekkür ederim.

Ama iki isimlilerde, kişinin ikinci ismini de büyük harfe çeviriyor.
Ã?rnek: Mehmet Ali AKTAÞ olması gerekirken, Mehmet ALİ AKTAÞ şekline çeviriyor.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Nadir' Alıntı:
Ama iki isimlilerde, kişinin ikinci ismini de büyük harfe çeviriyor.
Hmmm... o detayı atlamışım, pardon.

Bir bakayım ona şimdi....
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merhaba Nadir bey;

Araya işler girince hemen ilgilenemedim özür dilerim.

Biraz hızlıca oldu ama, bir de aşağıdaki şekliyle denermisiniz ?

[vb:1:4df80d2dc2]Private Sub Worksheet_Change(ByVal Target As Range)
Set IntersectRng = Application.Intersect(Target, Range("A:A"))
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(y)
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
[/vb:1:4df80d2dc2]
 
Katılım
21 Kasım 2004
Mesajlar
87
Sayın Raider,

Ã?zür dilemenize gerek yok, incelik göstermişsiniz. Ben de ancak şimdi cevap yazabiliyorum. Evet, araya işler giriyo...Yardımlarınız için teşekkürler.

Kodunuzu denedim, istenilen şekilde çalışıyor. Fakat enter ladıktan sonra çalışması uzun sürüyor. 3-4 snaniyelik bi gecikme...Yazınca da, silince de...Lütfen bunu koda güzellik katılabilmesi bakımından anlayın. Buldu da, gibilerinden değil de... .
 
Katılım
16 Haziran 2005
Mesajlar
22
Excel Vers. ve Dili
Microsoft® Office Excel 2003 - Türkçe
Merhaba,

Sayın Raider bu son yazdığınız visual basic kodunu TextBox için düzenleyebilirmisiniz?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Textbox için aşağıdaki kodu denermisiniz.

[vb:1:41dbb2420b]Private Sub TextBox1_Change()
If TextBox1.Value = "" Then Exit Sub
For a = 1 To Len(TextBox1.Value)
harf = Mid(TextBox1.Value, a, 1)
If a = 1 Then harf = WorksheetFunction.Proper(harf)
If c = 1 Then
harf = WorksheetFunction.Proper(harf)
c = c + 1
End If
If c > 2 Then harf = WorksheetFunction.Proper(harf)
kelime = kelime & harf
If harf = " " Then c = c + 1
Next
c = 0
TextBox1 = kelime
End Sub
[/vb:1:41dbb2420b]

Not:Kodda bazı eksikler olduğunu farkettim. Tam sonuç bir sonraki cevabımda verilmiştir.
 
Katılım
16 Haziran 2005
Mesajlar
22
Excel Vers. ve Dili
Microsoft® Office Excel 2003 - Türkçe
Sayın Moderatörüm leventm,

Harikasınız! Teşekkürler... :bravo:
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Nadir' Alıntı:
Buldu da, gibilerinden değil de... .

ehehhe.....alemsiniz Nadir bey......


Başka bir konuda herhangibir forumda olsanız... garanti banlanmıştınız şimdi :mrgreen:
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yukarıda ilk verdiğim kodun sadece 3 isimli kayıtlarda doğru çalışacak şekilde olduğunu gördüm, bu durumu atlamışım. Bu sebeple aşağıdaki kod tam olarak istenileni verecektir. Kod textboxtan çıkıldığı anda çalışacaktır.

[vb:1:d3afb40756]Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo 10
If TextBox1.Value = "" Then Exit Sub
a = WorksheetFunction.Search(" ", TextBox1.Value, 1)
bir = WorksheetFunction.Proper(Mid(TextBox1.Value, 1, a - 1))
son = WorksheetFunction.Search(" ", TextBox1.Value, a + 1)
iki = WorksheetFunction.Proper(Mid(TextBox1.Value, a + 1, son - a - 1))
For say = son + 1 To Len(TextBox1.Value)
d = WorksheetFunction.Proper(Mid(TextBox1.Value, say, 1))
uc = uc & d
Next
TextBox1 = bir & " " & iki & " " & uc
Exit Sub
10 For say = a + 1 To Len(TextBox1.Value)
b = WorksheetFunction.Proper(Mid(TextBox1.Value, say, 1))
iki = iki & b
Next
TextBox1 = bir & " " & iki
End Sub
[/vb:1:d3afb40756]
 
Üst