简体   繁体   中英

Usage of WorksheetFunction.Trim in Excel VBA is removing coloring in cell

I'm developing in VBA Excel and I discovered that I use WorksheetFunction.Trim(Cells(1,1)) where this cells contain any colored element, this element become colored by default.

Here is my code:

Cells(4, 2) = Application.WorksheetFunction.Trim(UCase(Cells(4, 2)))

Did you see this issue before?

How can I remove blank in the text without this issue?

Thanks for your help !

For cells with mixed formatting, replacing the cell value will lose the mixed format: instead you need to work with the cell's Characters collection:

Sub tester()
    Dim c As Range
    For Each c In Range("B3:B10").Cells
        TrimAndUppercase c
    Next c
End Sub


Sub TrimAndUppercase(c As Range)

    Dim i, prevSpace As Boolean
    
    If Len(c.Value) > 0 Then
        'trim the ends of the text
        Do While Left(c.Value, 1) = " "
            c.Characters(1, 1).Text = ""
        Loop
        Do While Right(c.Value, 1) = " "
            c.Characters(Len(c.Value), 1).Text = ""
        Loop
        'reduce runs of multiple spaces to a single space
        For i = c.Characters.Count To 1 Step -1
            With c.Characters(i, 1)
                If .Text = " " Then
                    'was the previous character a space?
                    If prevSpace Then
                        .Text = "" 'remove this space
                    Else
                        prevSpace = True
                    End If
                Else
                    .Text = UCase(.Text)
                    prevSpace = False
                End If
            End With
        Next i
    End If
   
End Sub

Note there are some limits to the length of the text using this method, and it can be a little slow with large ranges.

finally, I used this instruction.

Cells(4, 2) = Replace(UCase(Cells(4, 2)), " ", "")

In fact, my cell contain parameters and we perfers to avoid to have blank between them for visibility.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM