Excel 将修剪更改为修剪(替换)-宏

Excel 将修剪更改为修剪(替换)-宏,excel,vba,Excel,Vba,我有一个宏,它修剪所有行中不必要的空格。然而,我想使用修剪(替代)功能代替标准修剪,因为有时标准修剪功能对我不起作用。修剪和修剪(替换)之间的差异为 修剪: =修剪(A2) 修剪(替换): =修剪(替换(A4、字符(160)、字符(32))) 我试图将修剪行中的代码更改为: MyCell.Value = Trim(SUBSTITUTE(MyCell.Value,CHAR(160),CHAR(32))) 但不幸的是,事实并非如此。有人能帮我调整代码使其正常工作吗 我的修剪宏 Sub GOOD_C

我有一个宏,它修剪所有行中不必要的空格。然而,我想使用修剪(替代)功能代替标准修剪,因为有时标准修剪功能对我不起作用。修剪和修剪(替换)之间的差异为

修剪:

=修剪(A2)

修剪(替换):

=修剪(替换(A4、字符(160)、字符(32)))

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

MyCell.Value = Trim(SUBSTITUTE(MyCell.Value,CHAR(160),CHAR(32)))
但不幸的是,事实并非如此。有人能帮我调整代码使其正常工作吗

我的修剪宏

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

我真的不知道,您为什么要使用
替换
。如果要删除字符串中的所有空格,可以尝试以下操作:

MyCell.Value = Replace(MyCell.Value, " ", vbNullString)
(旁注:不要使用“选择”。它只会减慢宏的速度,在大多数情况下是不必要的)

编辑:现在我知道你的意思了。正如@KazJaw所说,您可以将其更改为:

MyCell.Value = Trim(Replace(MyCell.Value, Chr(160), Chr(32)))

我已经对它进行了测试,它很有效。

我真的不知道,您为什么要使用
替换
。如果要删除字符串中的所有空格,可以尝试以下操作:

MyCell.Value = Replace(MyCell.Value, " ", vbNullString)
TRIM(SUBSTITUTE(I8,CHAR(160),CHAR(32)))*1 
(旁注:不要使用“选择”。它只会减慢宏的速度,在大多数情况下是不必要的)

编辑:现在我知道你的意思了。正如@KazJaw所说,您可以将其更改为:

MyCell.Value = Trim(Replace(MyCell.Value, Chr(160), Chr(32)))
我已经对它进行了测试,效果很好。

试试这个

TRIM(SUBSTITUTE(I8,CHAR(160),CHAR(32)))*1 
MyCell.Value=Trim(Application.WorksheetFunction.Substitute(MyCell.Value, Chr(160), Chr(32)))
试试这个

MyCell.Value=Trim(Application.WorksheetFunction.Substitute(MyCell.Value, Chr(160), Chr(32)))

“替换”不适用于我,因为它会删除所有空格(也包括中间的空格)。而Trim(replacement)是绕过恼人的Excel方式的解决方案(从网站复制的一些数据具有阻止使用Trim或Replace的格式)。这就是为什么我想使用Trim(substitute)@mgunia,我认为@MiVoth的想法是正确的,但您可能需要以这种方式调整它并将其与其他函数混合:
Trim(Replace(MyCell.Value,Chr(160),Chr(32))
Replace对我不起作用,因为它删除了所有空格(也包括中间的空格)。而Trim(replacement)是绕过恼人的Excel方式的解决方案(从网站复制的一些数据具有阻止使用Trim或Replace的格式)。这就是为什么我想使用Trim(substitute)@mgunia,我认为@MiVoth的想法是正确的,但您可能需要以这种方式调整它并将其与其他函数混合:
Trim(Replace(MyCell.Value,Chr(160),Chr(32))
substitute
是一个工作表函数。要在VBA中使用它,需要将其引用为
Excel.Application.WorksheetFunction.Substitute
<代码>修剪
也是一项工作表功能。但是,也有一个名为
Trim
的VBA函数,它执行相同的操作,这就是为什么可以在VBA中直接调用它的原因
Replace
是VBA的等价物
Replace
。。。谢谢你的澄清。事实上,新的米沃思代码是有效的。我不想在这里发垃圾邮件,所以我想在这里感谢MiVoth提供的代码。
SUBSTITUTE
是一个工作表函数。要在VBA中使用它,需要将其引用为
Excel.Application.WorksheetFunction.Substitute
<代码>修剪
也是一项工作表功能。但是,也有一个名为
Trim
的VBA函数,它执行相同的操作,这就是为什么可以在VBA中直接调用它的原因
Replace
是VBA的等价物
Replace
。。。谢谢你的澄清。事实上,新的米沃思代码是有效的。我不想在这里发垃圾邮件,所以我想在这里对米沃斯的代码表示感谢。