由修剪空间的宏触发的问题

时间:2018-10-31 12:48:36

标签: excel vba excel-vba

在网上找到了这个宏,在研究它时,我想到了两个无法找到答案的问题:

首先,是否需要声明对象变量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

2 个答案:

答案 0 :(得分:3)

第一页:
使用Option Explicit并声明所有变量是一个很好的做法。声明范围和工作表等也是避免使用.Select.Activate的好方法。 How to avoid using Select in Excel VBA

第二:
MyCell = Trim(MyCell)将导致对该单元格执行写操作(花费时间),即使该单元格为空也是如此。检查它是否为空可以避免不必要的写操作,因此可以使其效率更高。

答案 1 :(得分:2)

在我看来,我认为最好声明一个范围以避免重复,并且如果代码较长,则更明确,尤其是。如果您使用循环,请使用循环来测试每个“ MyCell”(指向一个部分(范围)的地址) ))的整个“ MyRange”(也是一个范围)。

第二,通过检查单元格值将有助于节省时间,方法是在条件不满足后阻止执行代码。

最后,修剪和清除功能将帮助您“清除”不可见字符,不必要的空格等单元格值。