经过几个小时的研究,我仍然无法解决看似简单的问题。我是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
我无法找到解决问题的方法,现在我已经不再使用搜索查询了,所以我只是在用尽方法对其进行排序之后才打开一个新主题我。对不起,如果太简单了。
答案 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语法。