【问题标题】:VBA Overwriting first cell in loopVBA覆盖循环中的第一个单元格
【发布时间】:2016-10-14 07:38:36
【问题描述】:

我开始使用 VBA 进行编程,当然我遇到了一些问题。 我会尽力解释我的问题,如果不清楚,请告诉我。

我试图在一天中的特定时间复制货币对的当前即期汇率并将其粘贴到列中的另一张表中。然后对于下一个时间步骤,我希望新的即期汇率复制粘贴到下一行的该列,依此类推。 我现在遇到的问题是,如果我选择一个时间,例如09:00 我可以复制粘贴即期汇率,但明天在同一时间 09:00 我的代码将返回第一个单元格并覆盖该值。这是我不想要的。我想继续粘贴在下一个单元格中。我附上了我的代码,这样你就可以看到我的问题。它从我定义 i = 1 的地方开始。

Sub Macro1()
'
' Macro1 Macro

    alertTime = Now + TimeValue("00:00:05") 'hh:mm:ss
    Application.OnTime alertTime, "Macro1"

    Dim LTime1 As Date, LTime2 As Date
    Dim i As Integer, j As Integer
    Dim USDJPY As Worksheet, EURUSD As Worksheet, Allrates As Worksheet
    Dim LastRow As Long

    With Range("P17")
        .Value = Date
        .NumberFormat = "dd/mm/yy"
    End With

    Set Allrates = Sheets("Allrates")
    Set EURUSD = Sheets("EURUSD")
    Set EURGBP = Sheets("EURGBP")


    LTime1 = TimeValue("09:00:00")
    LTime2 = TimeValue("12:00:00")

    i = 1
    If Range("P20") = LTime1 Then
        Allrates.Range("B18").Copy EURGBP.Cells(i, 1)
    End If

    i = i + 1

    If Range("P20") = LTime2 Then
        Allrates.Range("B18").Copy EURGBP.Cells(i, 1)
    End If


ActiveWorkbook.RefreshAll

End Sub

【问题讨论】:

    标签: vba loops if-statement timer


    【解决方案1】:

    EURGBP.Cells(i, 1) 必须是EURGBP.Cells(EURGBP.RANGE("A10000").End(xlUp).Row+1, 1)

    【讨论】:

    • 没问题,你也可以把10000改成EURGBP.Rows.Count
    • 你的意思是这样吗? EURGBP.Cells(EURGBP.Rows.Count.End(xlUp).Row+1, 1)
    • 我猜我也不再需要它们了,我可以删除它们,对吗?感谢队友的帮助,vm 感激不尽!
    • 不需要 i 的 :) 没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多