VBA创建引用范围的公式

时间:2017-06-02 12:59:45

标签: excel vba excel-vba

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

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

我的第一个代码如下:

    Sub Create_Formulas()

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

    End Sub

其中J2是空白单元格,A2包含股票代码。它工作正常,但是当我尝试填写第2行和下面的时候,它仍然使用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

我无法找到解决问题的方法,现在我已经不再使用搜索查询了,所以我只是在用尽方法对其进行排序之后才打开一个新主题我。对不起,如果太简单了。

2 个答案:

答案 0 :(得分:1)

您在这里引用绝对单元格地址。就像在正常的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)的交集

答案 1 :(得分:0)

首先,在你的第二组代码中,你定义一个变量" test",但永远不要给它一个值。 您为变量" ticker"分配一个值,然后永远不会引用它。

其次,您为自动收报机分配的值是一个静态值,并且在另一行中输入时不会更改。

第三,我认为您的问题可以通过Excel中的公式而不是VBA来解决。 " INDIRECT"在这种情况下,函数非常有用。 尝试插入公式

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

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

注意' '标志着"贸易|罢工"。这是引用其他工作表的Excels语法。