对象'_Global'的方法“范围”失败

嗨,我是非常新的VBBA,第一天使用它,即时通讯试图获得下面的代码来读取列表,并删除所有的字母和空格,所以我只剩下在右边的列中的数字。 这段代码是我在网上find的东西,我试图为自己的目的进行编辑,任何帮助将大大地被赞成。 我仍然疯狂地用Googlesearch,看看我能find什么。 我得到错误在线开始“对于每个细胞”

Sub Remove_Alphabets_SpecialChar_RetainDecimalNumber_Test() Dim RegX As Object Dim Rng As Range Set RegX = CreateObject("vbscript.regexp") With RegX .Global = True .Pattern = "[^-0-9-.]" End With Range(Range("d4").End(xlDown)).Select For Each cell In Range(Selected) Rng.Offset(, 1) = RegX.Replace(Rng, "") Next cell End Sub 

除非您声明并分配一个名为Selected的variables(propablytypes的Range ),否则不存在Selected之类的事情。 但是,有一些称为select的是指当前选定的单元格。

 Range(Range("d4"), Range("d4").End(xlDown)).Select For Each cell In Range(Selection) Rng.Offset(, 1) = RegX.Replace(Rng, "") Next cell 

我还扩展了从D列中最后一个单元格中select的范围,将D4中的所有单元格包括在D列中的最后一个单元格中。

顺便说一句,最好进入VBE的工具►选项►编辑器,并检查需要variables声明 。 这可能需要一些习惯,但从长远来看,您的代码将会受益。

附录:

如果我没有至less试图让你远离使用。 SelectionSelection在你的代码写作,我将是失职。 依靠目前select的是容易出错和冲突。 这是你的日常写作与直接单元格引用的想法。

 Sub Remove_Alphabets_SpecialChar_RetainDecimalNumber_Test() Dim r As Long, RegX As Object Set RegX = CreateObject("vbscript.regexp") With RegX .Global = True .Pattern = "[^-0-9-.]" End With For r = 4 To Range("d4").End(xlDown).Row Cells(r, "D") = RegX.Replace(Cells(r, "D").Value, "") Next r Set RegX = Nothing End Sub