Репликация данных Excel и автоматическое сохранение - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь реплицировать данные, введенные из одного листа, в другой, а затем сохранять их дважды в день, когда они завершаются в отдельной строке каждый раз на листе2.Я столкнулся с несколькими проблемами.

Моя первая проблема заключается в том, что я сцепил данные при извлечении из первого листа со второго из нескольких ячеек, и эти данные не реплицируются должным образом, но все остальные строковые столбцы.

Вторая проблемаявляется то, что автоматическая репликация данных в новую строку в соответствии с набором таймера не работает, если этот лист специально не выбран.Основное использование этого будет состоять в том, чтобы лист 1 был открыт / обновлен, а лист 2 - сохранять данные каждый указанный период времени, но лист 1 всегда будет открытым на машине, на которой он будет работать.

Вот пример одной из моих составных строк:

=CONCATENATE(Sheet1!I9,", ",Sheet1!I10,", ",Sheet1!I11,", ",Sheet1!I12)

Код ниже - это то, что я использую для записи строки на второй лист каждые 5 секунд во время тестирования.Когда я переключаю листы, он начинает вставлять данные в активный лист.Можно ли указать только вывод на лист2?

Option Explicit
Public dTime As Date

Sub ValueStore()
Dim dTime As Date
    Range("A" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("A2").Value
    Range("B" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("B2").Value
    Range("C" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("C2").Value
    Range("D" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("D2").Value
    Range("E" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("E2").Value
    Range("F" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("F2").Value
    Range("G" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("G2").Value
    Range("H" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("H2").Value
    Range("I" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("I2").Value
    Range("J" & Cells(Rows.Count).Row).End(xlUp).Offset(1, 0).Value = Range("J2").Value




  Call StartTimer1
End Sub


Sub StartTimer1()
    dTime = Now + TimeValue("00:00:05")
    Application.OnTime dTime, "ValueStore", Schedule:=True
End Sub

Sub StopTimer1()
    On Error Resume Next
    Application.OnTime dTime, "ValueStore", Schedule:=False
End Sub

Это код, который я использую для кнопок, чтобы запускать и останавливать это:

 Private Sub CommandButton1_Click()
    Call StartTimer1
    End Sub

    Private Sub CommandButton2_Click()
    Call StopTimer1
    End Sub

Обновление

Чтобы уточнить, строки, которые я объединяю в одну ячейку, отображаются пустыми при повторном копировании строки каждые 5 секунд, но другие не объединенные ячейки будут копироваться без проблем.

1 Ответ

0 голосов
/ 12 июня 2018

Примерно так (при необходимости измените имена листов)

EDITED - предотвратить проблемы с отсутствием содержимого в ColA

Sub ValueStore()

    With ThisWorkbook.Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
        .Value = Now 'put a timestamp in first cell
        'then copy the values
        .Offset(0, 1).Resize(1, 10).Value = ThisWorkbook.Sheets("Sheet1").Range("A2").Resize(1, 10).Value
    End With

    StartTimer1

End Sub

Я не слежу за вашей конкатенациейпроблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...