ich habe hier aus dem Netz bzw. von PCWELT (lag dort auch) den Macro "GroKlei", der Shift-F3 von Word ersetzen soll.
Leider setzt er nur das erste Zeichen des markierten Bereichs in Großbuchstaben um, nicht aber das erste Zeichen jedes Wortes im Bereich.
Gibt es dafür auch eine Möglichkeit?
Dank im Voraus
Andreas
Hier der Code:
Code: Alles auswählen
Sub GroKlei
Dim sText As String
sText=""
'aktuelles Dokument
xDoc=ThisComponent
xController=xDoc.CurrentController
'Cursor im Doc
xVCrsr=xController.getViewCursor
CurPos=xVCrsr.getPosition()
'gesamtes Dokument
oText=xDoc.Text
xSelection = xDoc.CurrentController.getSelection
'Range des aktuellen Selection
xRange=xSelection(0)
xCursor=xRange.getText.createTExtCursorByRange(xRange)
'Wort markieren
sText=xCursor.GetString()
If Len(sText) <= 0 Then
xCursor.gotoStartOfWord(False)
xCursor.GotoEndOfWord(True)
'String aus Wort ermitteln
sText=xCursor.GetString()
End If
'klein > groß
If sText=LCase(sText) Then
sText=UCase(Left$(sText,1)) + Right$(sText, Len(sText)-1)
'Einfügen
oText.InsertString(xCursor,sText,True)
Exit Sub
End If
'groß > klein
If sText=UCase(sText) Then
oText.InsertString(xCursor,strConvert(stext,0),True)
Exit Sub
End If
'gemischt
If Left$(sText,1) = UCase(Left$(sText,1)) Then
oText.InsertString(xCursor,strConvert(stext,1),True)
Exit Sub
End If
oText.InsertString(xCursor,strConvert(stext,1),True)
End Sub
Function strConvert (cText As String, Flag As Integer) As String
iRun = 1
while iRun < Len(cText)+1
If Flag=1 Then
Mid( cText ,iRun, 1, UCase(Mid(cText,iRun,1))
Else
Mid( cText ,iRun, 1, LCase(Mid(cText,iRun,1))
End If
iRun = iRun + 1
Wend
strConvert=cText
End Function