【发布时间】:2021-02-24 13:22:12
【问题描述】:
我是 EXCEL VBA 的初学者,我想为股票交易创建自己的交易日记。
-
我创建了一个简单的计算器来计算进入交易的价值。单击“SEND TO ACTIVE>”后,值将保存在创建的数组中,并将保存在“Active >>>”表中的第一个空闲行上。目前我的数据只从 B21 行写入,但是我需要从 B5 行保存它。该表限制为 13 条记录(足够了)。我在交易结束后手动添加“收盘价”单元格。Screenshot1 - paste data from array to specific row - Active table
-
完成交易后,我需要将该行移至“交易历史>>>”表。单击“>发送到历史”按钮后,我需要删除当前行中的数据并将其移动到下表中的新行。我需要最新数据始终位于顶部 - 所以创建一个新行并将所有已保存的数据移到下一行。Screenshot2 - paste data from array to specific row - History table
我还需要自动计算行中的以下值:
Date Close = add Current Date
Day = Date Close - Date Open
Profit / Loss = Close Price - Entry Price
Result = if Profit / Loss is a positive number so write "WIN" otherwise write "LOSE".
如果您能至少在某些方面给我建议,我将非常高兴。非常感谢!
这是我将数组中的数据插入新行的代码:
Sub Save_calc()
'Define an array to contain your data
Dim DatAa() As Variant
ReDim DatAa(1 To 1, 1 To 12)
'Define the sheet you want to work on
Dim wS As Worksheet
Set wS = ThisWorkbook.ActiveSheet
'Fill the data array
DatAa(1, 1) = "=TODAY()"
DatAa(1, 2) = "///"
DatAa(1, 3) = "///"
DatAa(1, 4) = wS.Range("Q14").Value
DatAa(1, 5) = "Stock"
DatAa(1, 6) = wS.Range("Q7").Value
DatAa(1, 7) = wS.Range("S9").Value
DatAa(1, 8) = wS.Range("Q9").Value
DatAa(1, 9) = ""
DatAa(1, 10) = wS.Range("Q10").Value
DatAa(1, 11) = wS.Range("Q11").Value
DatAa(1, 12) = wS.Range("S7").Value
'Find the first available row
Dim NextRow As Long
NextRow = wS.Range("B" & wS.Rows.Count).End(xlUp).Row + 1
'Print your data in there
wS.Range("B" & NextRow).Resize(UBound(DatAa, 1), UBound(DatAa, 2)).Value = DatAa
End Sub
【问题讨论】:
-
你的图片很混乱。如果您可以发布“粘贴”之前和之后的图像,这可能会变得清晰。
-
好的,我明白了,谢谢。明天我将发送之前和之后的图像。