2015-02-10 90 views
0

我想在VBA中编写公式以将公式写入依赖其他动态单元格的单元格中。更改VBA中的公式并在Excel中显示它

Dim cell1, cell2 as Range 
set cell1 = Range("A1") 
set cell2 = Range("A2") 

“我不能硬编码A1和A2,因为细胞将通过增加行

以后更改”我想用引用在B1 =(1+cell1)*(1+cell2)显示,但是当我看到它在Excel中,它说=(1+A1)*(1+A2)

和B2这将是=(1+A2)*(1+A3)

我如何在VBA实现这一目标?

+0

A1 + 1是什么?你添加一行或一列吗?应该是B1吗?或A2? – Ditto 2015-02-10 19:29:49

回答

0

尝试像这样... INDIRECT组合将字符串“A1”转换为单元格引用。和OFFSET来调整给定参考的行数/列数。

Sub test() 
    Dim s1 As String 
    Dim add_row As Integer 
    Dim add_col As Integer 

    s1 = "A1" 

    add_row = 2 
    add_col = 1 

    Range("A1").Value = "=offset(indirect(" + Chr(34) + s1 + Chr(34) + ")," + Str(add_row) + "," + Str(add_col) + ",1,1)" 

    End Sub 

[编辑] 刚刚意识到,甚至不需要在那里间接功能:

这个作品一样好:

Range("A1").Value = "=offset(" + s1 + "," + Str(add_row) + "," + Str(add_col) + ",1,1)" 

;) [/编辑]