使用Application.WorksheetFunction.Trim修剪一系列单元格

时间:2019-02-06 17:27:14

标签: excel vba

我正在尝试使用Application.WorksheetFunction.Trim修剪一系列单元格。我正在尝试定义范围,但是出现类型不匹配错误

我创建了Dim并设置了范围并为该函数创建了一个变量。

Dim rng As Range
Dim myanswer

Set rng = ActiveSheet.Range("T2:T10")
myanswer = Application.WorksheetFunction.Trim(rng)

这是我的另一个密码

Dim rng As Range
Dim LastRow As Long

LastRow = Cells(Rows.Count, "T").End(xlUp).Row
Set rng = Range("T2:T" & LastRow)

Application.WorksheetFunction.Trim (rng)

我希望它修剪每个单元以消除多余的空间。

也尝试使用此方法,但内存不足。

rng = Application.WorksheetFunction.Trim(Cells.Value)

2 个答案:

答案 0 :(得分:1)

Trim()需要字符串参数。 Application.WorksheetFunction.Trim (rng)中的参数是一个范围,只有在范围由单个单元格组成的情况下,才能将其解析为字符串。

Trim()在给定范围内的所有单元格,应将它们循环:

Public Sub TestMe()

    Dim myCell As Range
    For Each myCell In Worksheets(1).Range("A1:A5")
        myCell = WorksheetFunction.Trim(myCell)
    Next myCell

End Sub

答案 1 :(得分:1)

您的代码不起作用,因为您需要遍历每个单元格,无法一次完成所有操作

Dim rng As Range, r as range
Dim myanswer

Set rng = ActiveSheet.Range("T2:T10")
for each r in rng    
     r.value=Application.WorksheetFunction.Trim(r)
next r

您可以使用“评估”来避免循环

Sub x()

Dim r As Range

Set r = Range("T2:T10")

r = Evaluate("IF(" & r.Address & "="""","""",TRIM(" & r.Address & "))")

End Sub

请注意,工作表函数TRIM删除了多余的内部空间,而VBA Trim仅删除了前导和尾随空间(无论如何您都已覆盖了它)。

相关问题