将TRIM更改为TRIM(替代) - 宏

mgu*_*nia 0 excel vba

我有一个宏修剪所有行中不必要的空格.然而,我想使用Trim(替代)功能而不是标准装饰 - 因为有时标准装饰功能对我不起作用.修剪和修剪(替代)之间的区别是

修剪:

TRIM =(A2)

TRIM(替补):

= TRIM(SUBSTITUTE(A4,CHAR(160),CHAR(32)))

我试图将修剪线中的代码更改为:

MyCell.Value = Trim(SUBSTITUTE(MyCell.Value,CHAR(160),CHAR(32)))
Run Code Online (Sandbox Code Playgroud)

但遗憾的是它没有.有谁可以帮我调整代码使其工作?

我的微调

Sub GOOD_CT_TrimBText()
Cells.Select
Dim MyCell As Range
On Error Resume Next
    Selection.Cells.SpecialCells(xlCellTypeConstants, 23).Select
    For Each MyCell In Selection.Cells
        MyCell.Value = Trim(MyCell.Value)
    Next
On Error GoTo 0
End Sub
Run Code Online (Sandbox Code Playgroud)

MiV*_*oth 5

我真的不知道,你想用什么原因SUBSTITUTE.如果要删除字符串中的所有空格,则可以尝试以下操作:

MyCell.Value = Replace(MyCell.Value, " ", vbNullString)
Run Code Online (Sandbox Code Playgroud)

(另请注意:不要使用"选择".它只会减慢宏的速度,大部分时间都是不必要的)

编辑:现在我知道,你的意思.正如@KazJaw所说,你可以改为:

MyCell.Value = Trim(Replace(MyCell.Value, Chr(160), Chr(32)))
Run Code Online (Sandbox Code Playgroud)

我已经测试了它并且它有效.

  • @mgunia,我认为@MiVoth的想法是正确的,但你可能需要调整并以这种方式将它与其他函数混合:`修剪(替换(MyCell.Value,Chr(160),Chr(32))) (2认同)