- Katılım
- 15 Temmuz 2012
- Mesajlar
- 2,802
- Excel Vers. ve Dili
- Ofis 2021 TR 64 Bit
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Dim Kontrol As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Kontrol = True Then Exit Sub
If Not Intersect(Target, Range("H7:H100")) Is Nothing Then
cumle = WorksheetFunction.Trim(Target.Text)
For k = 3 To Len(cumle) - 1
If Mid(cumle, k, 1) = "." Or Mid(cumle, k, 1) = "!" Or Mid(cumle, k, 1) = "?" Then
cumle = Left(cumle, k) & " " & UCase(Mid(cumle, k + 2, 1)) & Mid(cumle, k + 3, Len(cumle))
End If
Next
Kontrol = True
Target = UCase(Left(cumle, 1)) & Mid(cumle, 2, Len(cumle))
End If
Kontrol = False
End Sub
Sayın Ömer Bey, sizden küçük bir çözüm isteyebilir miyim?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Start As Boolean
If Not Intersect(Target, Range("H7:H100")) Is Nothing Then
myStr = Application.WorksheetFunction.Trim(Target.Value)
Start = True
For i = 1 To Len(myStr)
strCharacter = Mid(myStr, i, 1)
Select Case strCharacter
Case ".", "?", "!"
Start = True
Case "a" To "z"
If Start Then strCharacter = UCase(strCharacter)
Start = False
Case "A" To "Z"
If Start Then
Start = False
Else
strCharacter = LCase(strCharacter)
End If
End Select
Mid(myStr, i, 1) = strCharacter
Next
Target.Value = myStr
End If
End Sub
.....
...
Aslında Ms.Word'deki "TÜMCE DÜZENİ" işlemi tam olarak istediğiniz şey sanırım.
Nette baktığımda word makrosu olarak ...Range.Case = wdTitleSentence şeklinde bir kod gördüm.
Bu kod Ms.Excel'de kullanılabilir mi bilemiyorum.
.
Sub Test()
'Haluk - 14/08/2018
Dim objWord As Object, newDoc As Object
Set objWord = CreateObject("Word.Application")
Set newDoc = objWord.Documents.Add
newDoc.Range.Text = Range("H7").Text
newDoc.Range.Case = 4
Range("H7") = newDoc.Range.Text
newDoc.Close SaveChanges:=False
objWord.Quit
Set newDoc = Nothing
Set objWord = Nothing
End Sub
Çok detaylı inceleyemedim ama, RegExp metodu ile yapılan aşağıdaki alternatifi deneyebilirsiniz ....
Bu kodla; cümlelerin nokta, soru işareti ve ünlem işareti ile bitmesi halinde, takip eden cümlenin ilk kelimesinin birinci harfi büyük harfe çevrilir.
Kod:Private Sub Worksheet_Change(ByVal Target As Range) Dim RegExp As Object, myData As Object If Not Intersect(Target, Range("H7:H100")) Is Nothing Then myStr = WorksheetFunction.Trim(LCase(Target.Text)) Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "[.?!]\s." RegExp.Global = True For Each myData In RegExp.Execute(myStr) myStr = Application.Replace(myStr, myData.firstIndex + 1, myData.Length, UCase(myData.Value)) Next If myStr = "" Then Exit Sub Target = Application.Replace(myStr, 1, 1, UCase(Left(myStr, 1))) Set RegExp = Nothing End If End Sub