VBA创build公式引用一个范围

经过几个小时的研究,我仍然无法解决似乎是一个非常简单的问题。 我是新来的VBA,所以我会尽可能具体在我的问题。

我正在使用DDE链接获取股票报价。 我设法解决了大部分的表,但是我需要一个VBA来创build一个完成的公式(即没有单元格引用),以便DDE链接正常工作。

我的第一个代码如下:

Sub Create_Formulas() Range("J1").Formula = "=Trade|Strike!" & Range("A1").Value End Sub 

其中J2是空白单元格,A2包含股票代码。 它工作正常,但是当我尝试填写行2和波纹pipe时,它仍然使用A1作为静态值。

  Sub Create_Formulas() Dim test As Variant ticker = Range("A1").Value 'Test to make variable change with each row 'Range("J1:J35").Formula = "=Trade|Strike!" & Range("A1:A35").Value 'not working Range("J1:J35").Formula = "=Trade|Strike!" & ticker 'not working End Sub 

我找不到解决这个问题的方法,现在我无法使用search查询,所以我只是在用完自己的方法排除它之后才打开一个新的主题。 对不起,太简单了。

你在这里引用绝对单元格地址。 就像在正常的excel公式中使用$ A $ 1一样。

你想要做的是:

 Dim row as Integer For row = 1 to 35 Cells(row,10).Formula = "=Trade|Strike!" & Cells(row,1).Value Next row 

这将用公式填充范围J1到J35。 由于(行,10)表示行与列10(J)的交点,

首先,在你的第二套代码中,你定义了一个variables“test”,但从不给它一个值。 您为variables“ticker”分配一个值,然后永远不会引用它。

其次,您分配给股票的价值是一个静态值,并且在input到不同行时不会改变。

第三,我认为你的问题可以用Excel中的公式来解决,而不是使用VBA。 在这种情况下,“间接”function可能非常有用。 尝试插入公式

 =INDIRECT("'Trade|Strike'!"&A1) 

进入单元格A1,然后复制下来。

注意“Trade | Strike”周围的标记。 这是用于引用其他工作表的Excels语法。