Golyaka07
Altın Üye
- Katılım
- 19 Ocak 2024
- Mesajlar
- 4
- Excel Vers. ve Dili
- 2016 - Türkçe
- Altın Üyelik Bitiş Tarihi
- 23-01-2025
Merhaba herkese kolay gelsin
Private Sub Worksheet_Change(ByVal Target As Range)
' B5 hücresi değiştiğinde çalışır
If Not Intersect(Target, Range("B5")) Is Nothing Then
' B5 hücresi doluysa EkiEkle prosedürünü çağır
If Len(Range("B5").Value) > 0 Then
EkiEkle
End If
End If
End Sub
Sub EkiEkle()
' B5 hücresinden şehir isimlerini al
Dim hücreB5 As Range
Set hücreB5 = Range("B5")
' Şehir isimlerini düzenle ve B6 hücresine yaz
Range("B6").Value = DuzenleEki(hücreB5.Value)
End Sub
Function DuzenleEki(sehirler As String) As String
' Kalın sesli harfler
Dim kalın_sesli_harfler As String
kalın_sesli_harfler = "aıou"
' İnce sesli harfler
Dim ince_sesli_harfler As String
ince_sesli_harfler = "eiöü"
' - işaretine göre şehir isimlerini ayır
Dim s As Variant
s = Split(sehirler, " - ")
' Birinci şehir adı
Dim sehir1 As String
sehir1 = Trim(s(0)) ' Boşlukları temizle
' Birinci şehir'in son iki karakterini kontrol et ve eki ekle
Dim sonIkiKarakter1 As String
sonIkiKarakter1 = Mid(sehir1, Len(sehir1) - 1, 2)
If InStr(kalın_sesli_harfler, Mid(sonIkiKarakter1, 1, 1)) > 0 Then
sehir1 = sehir1 & "'dan"
ElseIf InStr(ince_sesli_harfler, Mid(sonIkiKarakter1, 1, 1)) > 0 Then
sehir1 = sehir1 & "'den"
End If
If InStr(kalın_sesli_harfler, Mid(sonIkiKarakter1, 2, 1)) > 0 Then
sehir1 = sehir1 & "'dan"
ElseIf InStr(ince_sesli_harfler, Mid(sonIkiKarakter1, 2, 1)) > 0 Then
sehir1 = sehir1 & "'den"
End If
' İkinci şehir adı
Dim sehir2 As String
sehir2 = Trim(s(1)) ' Boşlukları temizle
' İkinci şehir'in son iki karakterini kontrol et ve eki ekle
Dim sonIkiKarakter2 As String
sonIkiKarakter2 = Mid(sehir2, Len(sehir2) - 1, 2)
If InStr(kalın_sesli_harfler, Mid(sonIkiKarakter2, 2, 1)) > 0 Then
sehir2 = sehir2 & "'ya"
ElseIf InStr(ince_sesli_harfler, Mid(sonIkiKarakter2, 2, 1)) > 0 Then
sehir2 = sehir2 & "'ye"
End If
If Mid(sehir2, Len(sehir2), 1) = "s" Then
sehir2 = sehir2 & "'e"
End If
' Düzenlenmiş şehir isimlerini birleştir ve geri döndür
DuzenleEki = sehir1 & " - " & sehir2
End Function
Elimde böyle bir kod var. Bu kodda b5 hücresinde aralarında - işareti bulunan " Samsun - Ankara " iki şehir ismine ayrılma ve yönelme ekleri eklenerek b6 hücresine yazılmaktadır. Ben b6 hücresi yerine istediğim hücreye bu kodu yazdıramıyorum. Örneğin a2 hücremde bir metin var ve metin içerisine b5te bulunan şehir isimlerine ayrılma ve yönelme ekleri eklenerek yazmasını istiyorum. a2 hücresine =ekiekle(b5) yazdığımda aktif olmasını istiyorum. (Not: VBA kodları konusunda deneyimli değilim öğrenmeye yeni başladım)
Private Sub Worksheet_Change(ByVal Target As Range)
' B5 hücresi değiştiğinde çalışır
If Not Intersect(Target, Range("B5")) Is Nothing Then
' B5 hücresi doluysa EkiEkle prosedürünü çağır
If Len(Range("B5").Value) > 0 Then
EkiEkle
End If
End If
End Sub
Sub EkiEkle()
' B5 hücresinden şehir isimlerini al
Dim hücreB5 As Range
Set hücreB5 = Range("B5")
' Şehir isimlerini düzenle ve B6 hücresine yaz
Range("B6").Value = DuzenleEki(hücreB5.Value)
End Sub
Function DuzenleEki(sehirler As String) As String
' Kalın sesli harfler
Dim kalın_sesli_harfler As String
kalın_sesli_harfler = "aıou"
' İnce sesli harfler
Dim ince_sesli_harfler As String
ince_sesli_harfler = "eiöü"
' - işaretine göre şehir isimlerini ayır
Dim s As Variant
s = Split(sehirler, " - ")
' Birinci şehir adı
Dim sehir1 As String
sehir1 = Trim(s(0)) ' Boşlukları temizle
' Birinci şehir'in son iki karakterini kontrol et ve eki ekle
Dim sonIkiKarakter1 As String
sonIkiKarakter1 = Mid(sehir1, Len(sehir1) - 1, 2)
If InStr(kalın_sesli_harfler, Mid(sonIkiKarakter1, 1, 1)) > 0 Then
sehir1 = sehir1 & "'dan"
ElseIf InStr(ince_sesli_harfler, Mid(sonIkiKarakter1, 1, 1)) > 0 Then
sehir1 = sehir1 & "'den"
End If
If InStr(kalın_sesli_harfler, Mid(sonIkiKarakter1, 2, 1)) > 0 Then
sehir1 = sehir1 & "'dan"
ElseIf InStr(ince_sesli_harfler, Mid(sonIkiKarakter1, 2, 1)) > 0 Then
sehir1 = sehir1 & "'den"
End If
' İkinci şehir adı
Dim sehir2 As String
sehir2 = Trim(s(1)) ' Boşlukları temizle
' İkinci şehir'in son iki karakterini kontrol et ve eki ekle
Dim sonIkiKarakter2 As String
sonIkiKarakter2 = Mid(sehir2, Len(sehir2) - 1, 2)
If InStr(kalın_sesli_harfler, Mid(sonIkiKarakter2, 2, 1)) > 0 Then
sehir2 = sehir2 & "'ya"
ElseIf InStr(ince_sesli_harfler, Mid(sonIkiKarakter2, 2, 1)) > 0 Then
sehir2 = sehir2 & "'ye"
End If
If Mid(sehir2, Len(sehir2), 1) = "s" Then
sehir2 = sehir2 & "'e"
End If
' Düzenlenmiş şehir isimlerini birleştir ve geri döndür
DuzenleEki = sehir1 & " - " & sehir2
End Function
Elimde böyle bir kod var. Bu kodda b5 hücresinde aralarında - işareti bulunan " Samsun - Ankara " iki şehir ismine ayrılma ve yönelme ekleri eklenerek b6 hücresine yazılmaktadır. Ben b6 hücresi yerine istediğim hücreye bu kodu yazdıramıyorum. Örneğin a2 hücremde bir metin var ve metin içerisine b5te bulunan şehir isimlerine ayrılma ve yönelme ekleri eklenerek yazmasını istiyorum. a2 hücresine =ekiekle(b5) yazdığımda aktif olmasını istiyorum. (Not: VBA kodları konusunda deneyimli değilim öğrenmeye yeni başladım)