如何复制唯一的,更改值并粘贴到另一个工作表VBA中

时间:2016-09-29 16:06:13

标签: excel vba excel-vba macros copy

我对VBA很陌生,并试图看看我是否可以为某个进程创建代码。我有一个电子表格,在第一行(公司A,公司B等)中有一些唯一标识符和公司名称。在以下列中,还有一些其他列,例如位置,密钥联系人等,它们对应于每个公司。最后,有一个专栏"评论"。这些评论会定期更新。

我想要做的是创建一个宏,让我可以找到独特公司的评论,复制(或剪切)它并将其粘贴到历史评论中#34;工作簿中的工作表,以便我可以保留过去注释的记录。有没有办法创建一个宏来做到这一点?我已经创建了一些内容,如果我输入确切的Cell Name,它会复制该注释并粘贴它但我想看看我是否可以指定一个单元格,我可以输入公司名称,宏将查看该单元格中的内容,然后复制相应的注释,将其粘贴到背板中,然后清除单元格以便我可以输入新注释。我不知道这是否可以远程实现,但任何帮助将不胜感激!

 Sub Range_copy()
 Dim cellwant As Variant
 Dim cellhistory As Variant
 Dim LRow As Variant
 Dim Account As Variant


 Worksheets("AAG").Select

 Worksheets("AAG").Range("I3").Select
 cellwant = Selection.Value
 FindString = Sheets("AAG").Range("B5:B65").Value

 cellwant = Selection.Value

 Worksheets("AAG").Range(cellwant).copy
 Worksheets("Sheet2").Activate

 Worksheets("Sheet2").Range("A1").Select

1 个答案:

答案 0 :(得分:0)

对于公司名称的“相应评论”,问题有点模糊。但是,我认为您正在寻找的内容可以使用Worksheet_Change事件完成,该事件将在给定工作表上进行更改时自动触发。

Private Sub Worksheet_Change(ByVal Target As Range)
    Const csCommentCol As Integer = 5 'The column that contains the comments
    Const csTarget As String = "Sheet2" 'The worksheet with the record of comments
    Const csTargetCol As String = "A" 'The column on the sheet with the list

    Dim shtTarget As Worksheet
    Dim lngLast As Long
    Dim strOldComment As String
    Dim strNewComment As String

    Application.EnableEvents = False 'Prevent this procedure from triggering repeatedly

    If Target.Column = csCommentCol Then 'Check if it's the comment column that's being changed
        Set shtTarget = Sheets(csTarget) 'Define our target sheet. Only here for clarity later
        lngLast = shtTarget.Range(csTargetCol & Rows.Count).End(xlUp).Row + 1 'Find the first empty row
        strNewComment = Target.Value    'Copy the newly entered comment into a variable for safekeeping
        Application.Undo    'Undo the change to return to the old value
        strOldComment = Target.Value    'Copy the old value into a string for future use
        Target.Value = strNewComment    'Restore the new comment
        shtTarget.Range(csTargetCol & lngLast).Value = Target.Value 'Copy the value over
        Target.Select
    End If

    Application.EnableEvents = True
End Sub

将此代码放在将包含注释的工作表的Sheet对象(而不是模块)中。根据需要替换顶部的常量。每次更改时它都会自动运行;它检查是否在我们指定的列中进行了更改(如果您愿意,可以是指定的单元格);如果有变化,它会在我们的记录表中​​找到第一个空单元格并复制那里单元格中的值;然后它清除目标单元格以获取新条目并重新选择它。