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(以及范围内的所有其他相关数组)视为二维数组。这没有帮助。如果序列是范围对象,则每个序列将表示一行,而不是一个单元格。