使用 VBA 将“stockhistory”公式插入单元格

时间:2021-06-18 23:33:11

标签: excel vba excel-formula

周五快乐!

我正在尝试使用 VBA 在单元格中插入一个公式,该公式将返回股票价格历史记录。不幸的是,公式以“=@stockhistory”而不是“=stockhistory”的形式输入到单元格中。然后该单元格简单地显示为“日期”而不是它应该的样子。如果我从单元格中的公式中手动删除“@”,数据会按照我想要的方式自动填充。问题是我无法让 VBA 在公式中没有“@”的情况下插入公式。

以下是我编写的代码 - 我已经注释掉了很多行,因为我只是在测试代码的相关部分。


Dim wsList, wsData As Worksheet
Dim Ticker, Return_Interval, Return_Data, Result As String
Dim i, x, y, Interval_Code, Interval_Converter, Return_Years, Last_Column, Last_Row As Integer
Dim Security_Table As ListObject
Dim New_Row As ListRow

Set wsList = ThisWorkbook.Worksheets("Securities_List")
Set wsData = ThisWorkbook.Worksheets("Securities_Data")
Set Security_Table = wsList.ListObjects("Security_Table")

'Assign variable to info

Ticker = wsList.Range("C2")
Return_Interval = wsList.Range("C3")
Return_Years = wsList.Range("C4")

'Ensure 3 input fields contain info

If Ticker = "" Or Return_Interval = "" Or Return_Years = "" Then
    If Ticker = "" Then
        MsgBox ("Please Enter Ticker Symbol")
        Range("C2").Activate
    ElseIf Return_Interval = "" Then
        MsgBox ("Please Enter Return Interval")
        Range("C3").Activate
    ElseIf Return_Years = "" Then
        MsgBox ("Please Enter Years")
        Range("C4").Activate
    End If
    Exit Sub
End If

'Ensure ticker isn't already in table

Last_Row = Cells(Rows.Count, 5).End(xlUp).Row

'For i = 1 To Last_Row
'    If Cells(i, 6) = Ticker Then
'        MsgBox ("Security Already Exists")
'        wsList.ListObjects("Security_Table").ListRows(i - 2).Range.Select
'        Exit Sub
'    End If
'Next i

'If ticker isn't already in table, add ticker

'Set NewRow = Security_Table.ListRows.Add
'Last_Row = Cells(Rows.Count, 5).End(xlUp).Row
'Range("E" & Last_Row).Value = Ticker
'Range("E" & Last_Row).ConvertToLinkedDataType ServiceID:=268435456, LanguageCulture:="en-US"

'Prepare info for formula to return metrics

'Interval_Converter = Return_Years * 365
'
'Select Case Return_Interval
'    Case "Daily"
'        Interval_Code = 0
'    Case "Weekly"
'        Interval_Code = 1
'    Case "Monthly"
'        Interval_Code = 3
'End Select

'Pull Historical Closing Prices for Ticker

Last_Column = wsData.Cells(1, Columns.Count).End(xlToLeft).Column + 1
Cells(2, Last_Column) = "=Stockhistory(" & """TSLA""" & ", today()-365, today(), 2)"

'
'
End Sub

0 个答案:

没有答案
相关问题