繁体   English   中英

循环运行其他宏的Excel VBA宏

[英]Looping Excel VBA Macro that Runs other Macros

我正在尝试制作一个vba程序,该程序将A列中的股票行情收录器粘贴到单元格中不同的“设置”表上,然后该程序将执行另外两个vba代码,这些代码可下载历史数据并回测我的公式。 然后程序将返回“数据”表,并将“设置”上“ B10”中的值打印到“数据”中的D列中。 我需要将打印的值放在与股票行的行相对应的d列中。 该程序必须重复500次。 您能帮我找到解决方法或指出我的代码有什么问题吗? 谢谢!

Sub finalbalance()

Dim ticker As Range
Dim i As Long
Sheets("results").Activate
    Set ticker = ActiveCell
    For i = 1 To 500
        Sheets("results").Activate
        ticker.Select
        Selection.Copy
        Sheets("Settings").Select
        Range("B1").Select
        ActiveSheet.Paste
        Application.Run "datadownload"
        Application.Run "btest"
        ticker.Offset(0, 3) = Sheets("settings").Range("B10")
        ticker.Address = ticker.Offset(1, 0)
    Next i
End Sub

问题是您无法将值分配给.Address属性:

'Instead of
ticker.Address = ticker.Offset(1, 0)

'Use:
Set ticker = ticker.offset(1, 0)

这将使您的代码按原样工作。 但是,选择语句确实不是必需的,应该避免。 这是代码的清理版本:

Sub finalbalance()

    Dim wsResults As Worksheet
    Dim wsSettings As Worksheet
    Dim rngStartCell As Range
    Dim arrResults() As Variant
    Dim lNumReps As Long
    Dim i As Long

    Set wsResults = Sheets("Results")
    Set wsSettings = Sheets("Settings")
    Set rngStartCell = wsResults.Range("A2")

    lNumReps = 500
    ReDim arrResults(1 To lNumReps)

    For i = 1 To lNumReps
        wsSettings.Range("B1").Value = rngStartCell.Offset(i - 1).Value
        Application.Run "datadownload"
        Application.Run "btest"
        arrResults(i) = wsSettings.Range("B10").Value
    Next i

    rngStartCell.Offset(, 3).Resize(lNumReps).Value = Application.Transpose(arrResults)

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM