Vba ReplacementRange.value=ReplacementRange.value错误

Vba ReplacementRange.value=ReplacementRange.value错误,vba,Vba,我的代码中有一个bug(我找到了解决方法),但我希望您能帮助我确定问题所在。以下是不起作用的代码: Sub replacewithnumbers1() Dim ReplacementRange As Range Set ReplacementRange = Range("a2:c2") Set ReplacementRange = Range(ReplacementRange, ReplacementRange.End(xlDown)) ReplacementRange.value = R

我的代码中有一个bug(我找到了解决方法),但我希望您能帮助我确定问题所在。以下是不起作用的代码:

Sub replacewithnumbers1()

Dim ReplacementRange As Range

Set ReplacementRange = Range("a2:c2")
Set ReplacementRange = Range(ReplacementRange, ReplacementRange.End(xlDown))

ReplacementRange.value = ReplacementRange.value

End Sub
当我运行这个程序时,它适用于A2:C17,但下面的所有内容都会更改为“#N/A”

下面是有效的代码:

Dim ReplacementRange As Range

Set ReplacementRange = Range("A2")
Set ReplacementRange = Range(ReplacementRange, ReplacementRange.End(xlDown))

ReplacementRange.value = ReplacementRange.value

Set ReplacementRange = Range("b2")
Set ReplacementRange = Range(ReplacementRange, ReplacementRange.End(xlDown))
ReplacementRange.value = ReplacementRange.value

Set ReplacementRange = Range("c2")
Set ReplacementRange = Range(ReplacementRange, ReplacementRange.End(xlDown))
ReplacementRange.value = ReplacementRange.value

Set ReplacementRange = Range("I2")
Set ReplacementRange = Range(ReplacementRange, ReplacementRange.End(xlDown))

ReplacementRange.value = ReplacementRange.value
我所做的就是把它分解成更多的步骤(每列一个步骤),然后它就可以工作了。当我同时做两列时,我会得到相同的错误(A:B或B:C)。它总是停在第17排,我不知道为什么。你愿意帮我吗


谢谢

我发现了它为什么会这样(我想)。数据集上有一个过滤器,所以第16行不可见,当我取下过滤器时,它运行正常。很抱歉,这有点反高潮。

所有代码都没有按您所说的那样对我来说,您使用的是哪个版本的Excel?此外,我看不出它是如何工作的,因为您只是简单地将
ReplacementRange
的值设置为完全相同的值。您可以与第17行共享相关工作表部分的屏幕吗?我将发布屏幕,我正在使用Excel 2010。我使用替换范围的原因是将以文本形式存储的值更改为数字。愚蠢的问题-我如何发布文件/屏幕截图?这就是我要求共享屏幕的原因。)很高兴知道你自己解决了这个问题。过几天你就可以接受你自己的答案了。我不知道这是件好事。出于好奇-当存在隐藏行时,是什么导致代码中断?我不确定,但当您尝试复制整个筛选列并将其粘贴回同一位置时,可能正是相同的原因-您将看到“该命令不能用于多个选择”。似乎隐藏的单元格打破了连续的范围,而您的代码只适用于这种范围。奇怪的是,我知道如果我执行for语句(就像在ReplacementRange中的每个单元格中一样,它将命中隐藏单元格和可见单元格)。也许当我有更多的时间在我的手上,我会研究它更多。删除过滤器之前,宏工作是一个选项吗?请尝试
ThisWorkbook.ActiveSheet.AutoFilterMode=False