如果将复制粘贴到 Excel 表中,则使用宏突出显示数据

如果将复制粘贴到 Excel 表中,则使用宏突出显示数据

我想要一个宏代码来检测数据是否被复制粘贴到 excel 工作表上。我的工作是审查数据,发现有些操作员正在复制粘贴数据,而不是实际执行。我希望有人能帮助我编写一个 vba 代码,该代码可能会突出显示从其他 excel 工作表或工作簿复制粘贴的数据。如果可行的话……

提前非常感谢您。

答案1

您可以查看剪贴板中的值,并将其与工作表更改时目标中的值进行比较。

首先,您需要将引用添加到剪贴板。
打开工具 -> 引用并添加以下内容:

在此处输入图片描述

然后双击要使用该函数的工作表并粘贴以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DataObj As MSForms.DataObject
    Set DataObj = New MSForms.DataObject
    DataObj.GetFromClipboard

    On Error GoTo ENDIT
    strPaste = DataObj.GetText(1) 'clip board value
    strPaste = Trim(Replace(Replace(strPaste, vbNewLine, " "), vbTab, " ")) ' make new lines and tabs space

    Values = ""
    If IsArray(Target.Value2) Then ' is there more than one line of values?
        For Each v In Target ' implode to string
            Values = Values & v & " "
        Next
        Values = Trim(Values) ' remove trailing space
    Else
        Values = Target.Value2
    End If

    If Values = strPaste Then ' are clipboard the same as range?
        Target.Interior.Color = vbRed
    End If
ENDIT:
End Sub

使用示例:

在此处输入图片描述

答案2

此 VBA(宏)将允许您将选定的范围复制到另一张工作表并突出显示要审查的选定范围。

    Sub Copy&Paset()

     Dim xWs As Worksheet
     Dim Rng As Range

     Set Rng = Application.Selection
     Selection.Interior.Color = vbYellow
     Rng.Copy

     Set xWs = Sheets("Sheet2")
     xWs.Range("A1").PasteSpecial _        
     Paste:=xlPasteValues
     Application.CutCopyMode = False

    End Sub

注意:

  • 将此代码复制并粘贴为标准模块,并附上所需的工作表(您想要复制数据的源工作表)。
  • 在此代码中vbYellowSheet2& Range("A1")是可编辑的。

相关内容