我正在使用下面的代码修剪一些"空白单元格"包含空格。 事情是需要花费太多时间,就像循环到每个细胞一样。 我想要的是删除所有单元格中的空格(开头和结尾,不是中间的空格)。
有没有更简单的方法可以一次性申请?
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);
}
答案 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函数是最佳选择。