Excel数据复制和自动保存

时间:2018-06-11 23:29:23

标签: excel excel-vba vba

我正在尝试将从一个工作表输入的数据复制到另一个工作表中,然后每次在sheet2上单独完成时每天保存两次。我遇到了一些问题。

我的第一个问题是,当从多个单元格从第一张纸张拉到第二张纸张时,我连接了数据,并且数据没有正确复制,但所有其他字符串列都是。

第二个问题是,除非专门选择该表,否则根据计时器集自动将数据复制到新行是不可行的。其主要用途是打开/更新工作表1,工作表2在每个指定的时间段保存数据,但工作表1将始终是将运行的机器上打开的工作表。

以下是我的一个连接线的示例:

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

以下代码是我在测试期间每隔5秒在第二张纸上写一行的内容。当我切换工作表时,它开始将数据粘贴到活动工作表。是否可以仅指定输出到sheet2?

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 :(得分:0)

像这样(根据需要调整工作表名称)

已编辑 - 防止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

我没有关注你的连接问题。