TRIM使用VBA从单元格中删除空格

时间:2017-02-09 21:53:19

标签: excel excel-vba vba

我正在使用下面的代码修剪一些"空白单元格"包含空格。 事情是需要花费太多时间,就像循环到每个细胞一样。 我想要的是删除所有单元格中的空格(开头和结尾,不是中间的空格)。

有没有更简单的方法可以一次性申请?

    private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser wb = sender as WebBrowser;

        HtmlElement he = wb.Document.CreateElement("script");
        string jquery = System.IO.File.ReadAllText("jquery.js");
        he.InnerHtml = jquery;
        wb.Document.Body.InsertAdjacentElement(HtmlElementInsertionOrientation.AfterEnd, he);

    }

3 个答案:

答案 0 :(得分:10)

您可以更好地将数据复制到数组中,然后处理数组,然后将数据放回范围内。

另外,请勿使用Excel.Application.Trim。那个Excel 95语法,以及带有意外错误处理的后期绑定调用。 VBA内置了Trim功能 - 它的速度提高了大约10倍,并提供了智能感知功能。

Sub test()

    'Assuming ScenarioTable is a range
    Dim ScenarioTable As Range
    Set ScenarioTable = Range("ScenarioTable")

    'I assume your range might have some formulas, so...
    'Get the formulas into an array
    Dim v As Variant
    v = ScenarioTable.Formula

    Dim a As Long
    Dim f As Long
    'Then loop over the array
    For a = LBound(v, 1) To UBound(v, 1)
        For f = LBound(v, 2) To UBound(v, 2)
            If Not IsEmpty(v(a, f)) Then
                v(a, f) = VBA.Trim(v(a, f))
            End If
        Next f
    Next a
    'Insert the results
    ScenarioTable.Formula = v
End Sub

答案 1 :(得分:7)

使用Excel Trim的数组版本立即在整个范围内执行:

myRange.Value = Application.Trim(myRange.Value)

使用代码中可见的唯一变量,它将是:

With Range(Cells(1,1), Cells(ScenarioTableLastRow, ScenarioTableLastColumn))
     .Value = Application.Trim(.Value)
End With

答案 2 :(得分:0)

由于某种原因,Worksheetfunction.Trim不会删除空格,可能是因为其中包含CRLF。在这种情况下,Application.Clean函数是最佳选择。