VBA Перезаписывает первую ячейку в цикле

#vba #loops #if-statement #timer

#vba #циклы #if-оператор #таймер

Вопрос:

Я начал программировать с помощью 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
 

Ответ №1:

EURGBP.Cells(i, 1) должно быть EURGBP.Cells(EURGBP.RANGE("A10000").End(xlUp).Row 1, 1)

Комментарии:

1. нет проблем, вы можете изменить 10000 на EURGBP.Rows.Count также

2. ты имеешь в виду вот так? EURGBP. Ячейки (EURGBP.Строки. Count.End(xlUp). Строка 1, 1)

3. кроме того, «я», я в них больше не нуждаюсь, я думаю, я могу удалить их, верно? спасибо, приятель, за вашу помощь, вм оценил!!

4. Нет необходимости в i 🙂 Не проблема.