Range的值等于先前范围的值和地址VBA
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Range的值等于先前范围的值和地址VBA相关的知识,希望对你有一定的参考价值。
我想用= 4 * A2替换A1的值4。但是,当我尝试时:
Workbooks("Personal.xlsb").Worksheets("Sheet1").Activate
Range("A1").Value = "=" & Range("A1").Value * Range("A2").Address(0, 0)
我收到了不匹配错误。运行这个:
Range("A1").Value = "=" & Range("A1").Value * Range("A2").Value
返回值16(A2 = 4),但如前所述,我希望A1为4 * A2。有什么建议?非常感谢您的帮助。
编辑:我意识到我需要一些不同的东西。我想用之前的值和单元格的引用替换一系列单元格。我现在遇到错误的部分是用它们之前的值替换一系列单元格,我仍然会收到不匹配错误。
oldvalue = Range("D8:I8").Value
Range("D8:I8").Formula = "=" & oldvalue & "*A2"
有任何想法吗?再次感谢你的帮助。
我可以使用For Each循环执行此操作:
Sub test()
Workbooks("Personal.xlsb").Worksheets("Sheet1").Activate
Dim rng As Range: Set rng =
Workbooks("Personal.xlsb").Worksheets("Sheet1").Range("D8:I8")
Dim cel As Range
For Each cel In rng.Cells
With cel
oldvalue = .Value
.Formula = "=a2*" & oldvalue
End With
Next cel
End Sub
但是,如果有人能够想到一种方法来做到这一点,没有一个更好的循环。
答案
您可以使用
[A1].FormulaR1C1 = "=4*R[1]C"
如果您需要A1的旧值,那么您确实可以存储在变量中
Dim iVal As Double
iVal = [A1].Value
[A1].FormulaR1C1 = "=" & iVal & "*R[1]C"
另一答案
编写fórmulas的更好方法是使用.FormulaLocal。
对于您的情况,我建议使用变量来保持范围A1的旧值。
案例:
Workbooks("Personal.xlsb").Worksheets("Sheet1").Activate
oldvalue = Range("A1").value
Range("A1").FormulaLocal = "=" & oldvalue & "*A2"
以上是关于Range的值等于先前范围的值和地址VBA的主要内容,如果未能解决你的问题,请参考以下文章