对象“_Global”的方法 'range' 失败
Method 'range' of object' _Global' failed
你好,我是 vba 的新手,第一天使用它,我试图获取以下代码来阅读列表并删除所有字母和空格,所以我只剩下数字右侧的列。这段代码是我在网上找到的,我正在尝试根据自己的目的进行编辑,我们将不胜感激任何帮助。
我仍在疯狂地谷歌搜索,看看我能找到什么。
我在 'For each cell'
行开始时收到错误
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 这样的东西,除非你声明并分配一个名为 的变量(可能类型 Range)已选中。但是,有一种叫做 Selection 的东西,它指的是当前选定的单元格。
Range(Range("d4"), Range("d4").End(xlDown)).Select
For Each cell In Range(Selection)
Rng.Offset(, 1) = RegX.Replace(Rng, "")
Next cell
我还扩展了您从 D 列最后一个单元格中选择的范围,以包括从 D4 到 D 列最后一个单元格的所有单元格。
顺便说一句,最好进入 VBE 的工具 ► 选项 ► 编辑器并选中 需要变量声明。可能需要一些时间来适应,但您的代码将在长期 运行.
中受益
附录:
如果我不至少尝试让您在代码编写中避免使用 .Select
和 Selection
,那将是我的失职。依赖于当前选择的内容很容易出现错误和冲突。这是您在编写时考虑到直接单元格引用的例程。
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
你好,我是 vba 的新手,第一天使用它,我试图获取以下代码来阅读列表并删除所有字母和空格,所以我只剩下数字右侧的列。这段代码是我在网上找到的,我正在尝试根据自己的目的进行编辑,我们将不胜感激任何帮助。 我仍在疯狂地谷歌搜索,看看我能找到什么。 我在 'For each cell'
行开始时收到错误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 这样的东西,除非你声明并分配一个名为 的变量(可能类型 Range)已选中。但是,有一种叫做 Selection 的东西,它指的是当前选定的单元格。
Range(Range("d4"), Range("d4").End(xlDown)).Select
For Each cell In Range(Selection)
Rng.Offset(, 1) = RegX.Replace(Rng, "")
Next cell
我还扩展了您从 D 列最后一个单元格中选择的范围,以包括从 D4 到 D 列最后一个单元格的所有单元格。
顺便说一句,最好进入 VBE 的工具 ► 选项 ► 编辑器并选中 需要变量声明。可能需要一些时间来适应,但您的代码将在长期 运行.
中受益附录:
如果我不至少尝试让您在代码编写中避免使用 .Select
和 Selection
,那将是我的失职。依赖于当前选择的内容很容易出现错误和冲突。这是您在编写时考虑到直接单元格引用的例程。
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