|
请教,如何用VBA更高效地将工作表中所有单元格的前后空格去除?(同时保留公式)
——直接Excel中手动操作,我一般是在A1单元格随便加一个空格,然后选中全表,就可以批量点错误提示的“清空前后空字符串”,但是VBA好像没有对应这样的操作?
所以我尝试了第一种办法:检查所有单元格,对其中不含公式的全部使用Trim函数去除前后空格,但是这样有个问题,效率非常低,处理数据稍微多一点的就非常非常卡,代码如下:
- Sub 清空工作簿前后空字符串()
- Dim Rng As Range
- For Each Sheet In ActiveWorkbook.Worksheets
- On Error Resume Next
- For Each Rng In Sheet.UsedRange
- If Rng.HasFormula = 0 Then
- Rng = VBA.Trim(Rng)
- End If
- Next
复制代码
然后我在站内看到有类似的方法:将区域装入数组,循环数组后再写回区域,希望能够提高效率。但是数据装入数组,“hasformula”无法对数组元素判断?代码如下:
- Sub 数组()
- ARR = ActiveSheet.UsedRange
- ReDim BRR(1 To UBound(ARR), 1 To UBound(ARR, 2))
- For I = 1 To UBound(ARR)
- For J = 1 To UBound(ARR, 2)
- If ARR(I, J).HasFormula = 0 Then <font color="#ff0000">'报错(要求对象)</font>
- BRR(I, J) = Trim(ARR(I, J))
- End If
- Next
- Next
- ActiveSheet.UsedRange = BRR
- End Sub
复制代码
求问这段代码应该怎么写好呢
|
-
-
错误提示
|