gpt4 book ai didi

vba - 限制查找/替换区域

转载 作者:行者123 更新时间:2023-12-04 22:04:01 25 4
gpt4 key购买 nike

我有一个宏来清理原始输入的电话号码,它通常效果很好,除了 在我完成全局(工作簿)查找或替换的极少数情况之后。如果我脑子里放了个屁并且忘记从“工作簿”模式改回“工作表”模式,它将运行猖獗、杂乱无章地提取“-”和“。” 上没有类似的数据和公式全部 工作簿中的工作表,而不管我认为我已应用到它的约束。

如何正确约束它,这样我就不必每年花费几个小时数次恢复?

我现在拥有的:

Sheets("Data").Select  
Range("DataTbl[[Phone]:[Phone2]]").Select ' DataTbl is 15 col x >800 row
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:=")", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:="(", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

最佳答案

停止依赖.SelectSelection定义您关注的领域。它可能在某些甚至大部分时间都有效,但由于固有的模棱两可的性质,只能导致最终的错误。

Dim r As Range
On Error Resume Next
Set r = Cells.Find(What:=vbNullString, LookIn:=xlFormulas, _
SearchOrder:=xlRows, LookAt:=xlPart, MatchCase:=False)
On Error GoTo 0
With Sheets("Data").Range("DataTbl[[Phone]:[Phone2]]") ' DataTbl is 15 col x >800 row
.Replace What:=" ", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:=" ", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:=")", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:="-", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:="(", Replacement:=vbNullString, LookAt:=xlPart
.Replace What:=".", Replacement:=vbNullString, LookAt:=xlPart
End With

How to avoid using Select in Excel VBA macros各种远离 .Select的方法.

编辑:在开头添加四行代码重置“记住” .Find参数为默认值(例如,在:工作表内,而不是在:工作簿内)。

关于vba - 限制查找/替换区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28356054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com