Kann ich dieses Makro verwenden, um den ersten Buchstaben nach dem Komma in einen Großbuchstaben umzuwandeln?

Kann ich dieses Makro verwenden, um den ersten Buchstaben nach dem Komma in einen Großbuchstaben umzuwandeln?

Ich verwende dieses kleine Makro, um den ersten Buchstaben inGroßbuchstabenin einem bestimmten Bereich:

Sub TitleCase()
  Dim rng As Range, cell As Range
  Set rng = Range("D4:D999")
  For Each cell In rng
      If (cell.Value <> "") Then
          cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value, Len(cell.Value) - 1)
      End If
  Next cell
End Sub

,Ich muss nun jeden Buchstaben nach einem Komma ( ) umwandeln inGroßbuchstaben. Wie kann das gemacht werden?

Antwort1

Ersetzen:

 cell.Value = UCase(Left(cell.Value, 1)) & Right(cell.Value, Len(cell.Value) - 1)

Mit:

 comma = InStr(cell.Value, ",")
 If comma <> 0 Then
    cell.Value = Left(cell.Value, comma) & UCase(Mid(cell.Value, comma + 1, 1)) & Right(cell.Value, Len(cell.Value) - comma - 1)
End If

Es wird umgewandelt inGroßbuchstabender Buchstabe nach dem ersten Komma in der Zeichenfolge.


Wenn Sie habenmehr als ein Kommain der Zelle und ersetzen Sie dann das Makro durch dieses:

Sub TitleCase()
Dim rng As Range, cell As Range
Dim buffer() As String 'Creates an empty array
Set rng = Range("D4:D99")
For Each cell In rng
If (cell.Value <> "") Then
    buffer = Split(StrConv(cell.Value, vbUnicode), Chr$(0)) 'split characters into array
    ReDim Preserve buffer(UBound(buffer) - 1)
    iscomma = False
    changedstring = ""
    For i = LBound(buffer) To UBound(buffer)
        If iscomma = True Then
            buffer(i) = UCase(buffer(i))
            iscomma = False
        End If
        If buffer(i) = "," Then
            iscomma = True
        End If
        changedstring = changedstring & buffer(i)
    Next i
    cell.Value = changedstring
End If
Next cell
End Sub

Antwort2

Benutze das:

Private Function convertTitleToUppercase(s As String)
    Dim sSplit() As String: sSplit = Split(s, ",")
    Dim tmp As String

    Dim v As Variant: For Each v In sSplit
        tmp = IIf(tmp = "", tmp, tmp & ",") & StrConv(v, vbProperCase)
    Next v

    convertTitleToUppercase = tmp

End Function

Beispiel:

Debug.Print convertTitleToUppercase("LANTERNE, FHIA, ANTIK MESSING")

Kehrt zurück:

Lanterne, Fhia, Antik Messing

verwandte Informationen