在网上找到了这个宏,在研究它时,我想到了两个无法找到答案的问题:
首先,是否需要声明对象变量MyRange和MyCell? 通过这样做可以提供什么优势?
第二,基于我之前发布的问题,在调整其值之前检查单元格是否为空是否多余。此检查的优点是什么?仅仅是为了节省编译工作量/时间?还是还有其他技术原因?
Sub TrimSpaces()
Dim MyRange As Range
Dim MyCell As Range
Select Case MsgBox(“Workbook First?”, vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
Set MyRange = Selection
For Each MyCell in MyRange
If Not IsEmpty(MyCell) Then
MyCell = Trim(MyCell)
End If
Next MyCell
End Sub
答案 0 :(得分:3)
第一页:
使用Option Explicit
并声明所有变量是一个很好的做法。声明范围和工作表等也是避免使用.Select
或.Activate
的好方法。 How to avoid using Select in Excel VBA
第二:
MyCell = Trim(MyCell)
将导致对该单元格执行写操作(花费时间),即使该单元格为空也是如此。检查它是否为空可以避免不必要的写操作,因此可以使其效率更高。
答案 1 :(得分:2)
在我看来,我认为最好声明一个范围以避免重复,并且如果代码较长,则更明确,尤其是。如果您使用循环,请使用循环来测试每个“ MyCell”(指向一个部分(范围)的地址) ))的整个“ MyRange”(也是一个范围)。
第二,通过检查单元格值将有助于节省时间,方法是在条件不满足后阻止执行代码。
最后,修剪和清除功能将帮助您“清除”不可见字符,不必要的空格等单元格值。