在我的代码中有这样一段,我必须从一个范围中删除一些字符。
我可以使用.Replace
方法,而不是循环遍历范围内每个单元格中的每个字符,对吗?
- 不能使用正则表达式。*
Dim subst_ni As Range: Set subst_ni = ActiveSheet.Range("G2", ActiveSheet.Range("G" & ActiveSheet.Rows.Count).End(xlUp))
With subst_ni
.Replace What:=Chr(65), Replacement:="@"
.Replace What:=Chr(69), Replacement:="@"
.Replace What:=Chr(73), Replacement:="@"
.Replace What:=Chr(79), Replacement:="@"
.Replace What:=Chr(85), Replacement:="@"
.Replace What:=".", Replacement:=vbNullString
.Replace What:="/", Replacement:=vbNullString
.Replace What:=":", Replacement:=vbNullString
.Replace What:=";", Replacement:=vbNullString
End With
但是,我有几个替代品做相同的范围。
我遇到的问题是Chr(xx)
部分,在这里我有机会删除范围值的不可打印位,使用XX作为**“0到31**,127,129,141,143,144,157”和其他一些我不能使用的特定字符。
我们如何才能用更好的方式编写它,而不是为每个XX
编写一行代码?
1条答案
按热度按时间h7wcgrx31#
你现在编写代码的方式可能已经足够高效了(这取决于你要处理的数据集的大小),你可能正在寻求的是将代码块提取到它自己的子例程中,这样你就可以在多个范围上执行相同的操作。
如果是这样的话,创建一个模块并将代码放入一个新的子例程中。
.Replace
不匹配)*现在你可以使用新的sub
CleanRange
,方法是将你的range传递给它。