基于特定单词自动将单元格复制到另一个工作表

时间:2017-03-12 01:07:14

标签: excel vba

当单元格中出现“Overdue”字样时(在H列中),我希望该行中的名称(在A列中)和日期(在F列中)自动复制并粘贴到另一个工作表中(名为HomePage) )并出现在C12和E12栏中。

我有以下代码,但它正在剪切并粘贴整行。我只想将名称和日期复制并粘贴到我的主页。

Private Sub Worksheet_Change (ByVal Target As Range)
  If Target.Column = 8 Then
    If Target.Value = "Overdue" Then
      R = Target.Row
      Rows(R).Cut
      Worksheets("HomePage").Select
      With ActiveSheet
         lastrow = .Cells(.Rows.Count, "C").End(xlUp).Row + 1
         .Cells(lastrow, 1).Select
         .Paste
      End With
    End If
  End If
End Sub

2 个答案:

答案 0 :(得分:1)

由于您只需要两个单元格,为什么要复制和粘贴?只需直接分配值即可。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim R As Long
    If Target.Column = 8 Then
        If Target.Value = "Overdue" Then
            With Sheets("Homepage")
                R = .Cells(.Rows.Count, 3).End(xlUp).Row + 1
                .Cells(R, 3) = Target.Offset(0, -7) ' Column C = Column A
                .Cells(R, 5) = Target.Offset(0, -2) ' Column E = Column F
            End With
        End If
    End If
End Sub

答案 1 :(得分:0)

根据你的叙述

  

我想要该行的名称(在A列中)和日期(在F列中)   自动复制并粘贴到另一个工作表(命名为   HomePage)并出现在C12和E12栏中。

将以下代码放在工作表代码窗格

Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Column = 8 And .Value = "Overdue" Then
            Sheets("Homepage").Range("C12").Value = Range(.row, "A")
            Sheets("Homepage").Range("E12").Value = Range(.row, "F")
        End If
    End With
End Sub