我正在尝试构建一个 vba 程序,其中我有 3 个工作表:工作表 1、工作表 2 和工作表 3,我将在工作表 2(A 列:E 列)中输入数据,我想复制前 500 个要从工作表复制的 rics表 1(A 列)中的 2(B 列)以及根据表 1(D 列:G 列)中的 refinitv 公式得出的结果应该复制到表 3,然后宏应该再次转到表 2 复制接下来 500 个 rics 然后将其粘贴到工作表 1 列 A 中,无论结果如何都应该粘贴到工作表 3 中,这个过程应该一直运行,直到所有 rics 都覆盖在工作表 2 中。例如,如果工作表 2 总共有 1200 个 rics,那么循环将运行三次(500 + 500+ 200 = 1200)。我需要的唯一帮助是在 for 循环部分休息,我将自己尝试。
重写序列以便更好地理解:表 2:我将输入数据,宏应从 B 列中选择前 500 个 rics 并将它们粘贴到表 1 的 (A2) 列中,然后 eikon 公式将根据 A 列获取结果并且宏应该将结果复制到表 3 中,然后再次选择表 2 中的下 500 个 ric,并且应该遵循相同的过程。
Sub CAEvents()
Application.ScreenUpdating = False
Dim wb As Workbook, ws As Worksheet, wsRic As Worksheet, ws1 As Worksheet
Dim iLastRow As Long, r As Long, n As Long, i As Integer
Dim ric As String
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set ws1 = wb.sheeets("Sheet2") ' as appropriate
'n = ws.Range("B2").Value ' days
ThisWorkbook.Sheets("Sheet1").Range("A2:E50000").ClearContents
'ThisWorkbook.Sheets("Output").Cells.ClearContents
'ThisWorkbook.Sheets("InsertSeveralSpots").Range("B6:F6").End(xlDown).clearcontent
' loop through rics in col I
iLastRow = ws1.Cells(Rows.Count, "A").End(xlUp).Row
If iLastRow >= 2 Then
For r = 2 To iLastRow
ric = ws.Cells(r, "I")
ws.Range("A2").Value2 = ric
ws.Range("C1").FormulaR1C1 = "=@RHistory(R2C1,"".Timestamp;.Close"",""NBROWS:""&R2C2&"" INTERVAL:1D"",,""SORT:ASC TSREPEAT:NO CH:In;fd"",R[5]C)"
Application.Run "EikonRefreshWorksheet"
Application.Wait (Now + TimeValue("0:00:02"))