周五快乐!
我正在尝试使用 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