Excel VBA将值移动到相邻单元

Excel VBA将值移动到相邻单元,excel,vba,Excel,Vba,好吧,这只是简单的两行代码,由于某些原因无法按预期工作。我相信这很简单,但我不能把我的手指放在上面: Dim Series as Range Dim i as Integer Set Series = Range("A1:B1") i = 1 ' Following two lines apparently don't do anything ' I would have expected them to move value of cell B1 to A1, and make

好吧,这只是简单的两行代码,由于某些原因无法按预期工作。我相信这很简单,但我不能把我的手指放在上面:

Dim Series as Range
Dim i      as Integer

Set Series = Range("A1:B1")
i = 1

' Following two lines apparently don't do anything
' I would have expected them to move value of cell B1 to A1, and make B1 blank
Series.Value2(1, i) = Series.Value2(1, i + 1)
Series.Value2(1, i + 1) = ""
例如:

   A  B
1  "" 1
预期结果:

   A  B
1  1  ""

同样,我知道这是一个非常简单(和简化)的代码,但我就是想不出来。

在上面的代码中,我将按如下方式更改它,以完成相同的任务,参考range对象的各个单元格:

Series(i).Value2 = Series(i + 1).Value2
Series(i + 1).Value2 = ""
为什么要将()放在值2后面

这很好用

Series(1, i).Value2 = Series(1, i + 1).Value2
Series(1, i + 1).Value2 = ""

我最终在有问题的范围内定义了另一个范围,并使用偏移量引用该范围旁边的单元格,它不是很优雅,但解决了问题

Dim Series  as Range
Dim S_Point as Range
Dim i       as Integer

Set Series = Range("A1:B1")
i = 1

Set S_Point = Cells( Series.Row, i)
S_Point.Value2 = S_Point.Offset(0,1).Value2
S_Point.Offset(0,1).Value2 = ""

我不会这样做的;但我可以确认它不适用于Excel2007,我不知道为什么。在安全模式下,代码会导致Excel崩溃(关闭)。在正常模式下,我第一次遇到
堆栈溢出
错误。第二次崩溃了,谢谢你的尝试。也就是说,如何移动单元格值?我对建议持开放态度。我将发布一个带有一个解决方案的答案。实际上,我这样做是因为您的版本会产生“对象定义错误号1004”。话虽如此,我绝对同意你和赛特,甚至是马林的版本看起来更自然。它在这里工作得很好,没有错误。您是否像在原始代码中那样定义了系列?在我的原始代码中,“系列”以如下方式初始化“所有系列中的每个系列”。行“所有系列”通过选择初始化。Nontheles Excel将Series.Value2(以及范围内的所有其他相关数组)视为二维数组。这没有帮助。如果序列是范围对象,则每个序列将表示一行,而不是一个单元格。