如何在Excel工作簿中自动更新多个工作表?

时间:2017-12-03 20:59:08

标签: excel vba excel-vba

我有一个包含两个工作表的Excel工作簿 - "即将到来的订单"和"完成订单"。我使用了"即将到来的订单"即将到来的订单表,以及"已完成的订单"完成订单。

订单完成后,我会从"即将到来的订单"将其粘贴并粘贴到"完成订单"。

有没有办法通过创建一个宏来自动化它,一旦我在"即将到来的订单"表格会自动添加到"完成订单"片。

我在宏上学了一些教程,但我找不到合适的方法。请帮忙。

2 个答案:

答案 0 :(得分:0)

如何双击,双击单个单元格,您可以将行复制到"完成订单"选择并从"即将到来的订单"

中删除它

示例Workbook.SheetBeforeDoubleClick Event (Excel)

Option Explicit
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sht As Object, _
                                            ByVal Target As Range, _
                                                  Cancel As Boolean)

    Dim LastRow As Long
    Dim RngCopy As Range
    Dim Target_Sht As Worksheet

    Cancel = True

    Set Target_Sht = Sheets("Completed Orders")

    Set RngCopy = Sht.Range("A" & Target.Row, Sht.Cells _
                           (Target.Row, Sht.UsedRange.Column + _
                            Sht.UsedRange.Columns.Count).Address)

    With Target_Sht
        LastRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
        RngCopy.Copy Destination:=.Range("A" & LastRow)
        Sht.Rows(Target.Row).Delete
    End With

End Sub

enter image description here

答案 1 :(得分:0)

我是这个网站的新手,所以这是我的第一个回答" 我也是VBA编码的新手,但是我很难用xD

我只是创建了一个打开"输入框"输入销售ID#," OK"然后将其从"即将到来的订单"中的位置移开表格到"完成订单"的第一行第二张表上的表...我认为这很好,因为它允许您通过实际输入ID#来验证您要传输的数据;因为您不必搜索条目,所以也可以使更长的表更容易。 (明天我将尝试制作一个将记录返回到"即将到来的"页面......以防出现错误。 -请享用! (.Reverus。)

Sub Record_Transfer()
  Dim Rcrd, Rcrd2, Rng, tbl1, Tbl2 As Range
  Dim IDnum As String
  Dim x, x2, y, n As Integer

Worksheets(1).Activate

Set tbl1 = ActiveSheet.ListObjects("Table1")

IDnum = InputBox("Input ID to transfer: ", ["Transfer"], 17)
    If vbOKCancel = vbCancel Then
        Exit Sub
    End If

    If vbOKCancel = vbOK Then
        Set Rng = ActiveSheet.ListObjects("Table1").ListColumns(1).Range
        Set Rcrd = Rng.Find(IDnum, LookIn:=xlValues)
     End If

     If Rcrd Is Nothing Then
         MsgBox "ID not found."
             Exit Sub
     End If

 y = Rcrd.Row
 Set Rcrd = Worksheets(1).Range(Rcrd, Rcrd.End(xlToRight))
 x2 = ActiveSheet.ListObjects("Table1").ListColumns.Count

 Worksheets(2).Activate
 ActiveSheet.ListObjects("Table2").ListRows.Add (1)
 Set Rcrd2 = ActiveSheet.ListObjects("Table2").ListRows(1).Range
     For x = 1 To x2
         Rcrd2.Cells(x).Value = Rcrd.Cells(x).Value
         If x > x2 Then GoTo Del
     Next x
 Del:
     Sheets("Sheet1").Activate
     ActiveSheet.Rows(y).Delete

 End Sub