Excel VBA:当自动插入新数据时,如何自动向下移动单元格?

时间:2018-08-17 12:53:49

标签: excel vba

首先,我是第一次使用Excel中的VB。这是我的问题:我使用DreamReport每24小时将工厂数据发送到excel文件中。我正在使用单个静态excel文件。

问题在于,通过使用静态文件,每天都会替换数据。这是因为数据会自动放置在同一组单元格中,并且之前的24小时会被覆盖。数据放置方式如下:

Excel Sheet

因此,我需要一个脚本,该脚本将在报表添加屏幕快照中的数据后立即移入新数据以及所有先前的数据,以免覆盖任何数据。

在此先感谢任何有帮助的人!请问问题,如果我不清楚。

1 个答案:

答案 0 :(得分:-1)

根据我从您所写内容和屏幕截图中所收集的内容,excel工作表将由其他应用程序-DreamReport提供给第3行和第4行(或者可能只有第3行)。因此,使用给定的信息,您可以将以下代码粘贴到Excel工作簿的VBA编辑器中的Sheet1(Sheet1)上。 现在发生的情况是,每次喂入数据时,数据都会向下移动,从而为以后的数据创建一个空白范围。

按Alt + F11打开VBA编辑器,然后双击下面的页面,如图所示。打开后,粘贴以下代码。然后测试并确认。 Double click this sheet to paste the code

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A3:C4")         ' Checks whether this range changed

If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then

    Application.EnableEvents = False      ' disables events to avoid a loop
    Range("A3:C4").Insert Shift:=xlDown   ' shifts this range down
    Application.EnableEvents = True       ' ensures events are re-enabled

End If

结束子