![如果将复制粘贴到 Excel 表中,则使用宏突出显示数据](https://linux22.com/image/1594067/%E5%A6%82%E6%9E%9C%E5%B0%86%E5%A4%8D%E5%88%B6%E7%B2%98%E8%B4%B4%E5%88%B0%20Excel%20%E8%A1%A8%E4%B8%AD%EF%BC%8C%E5%88%99%E4%BD%BF%E7%94%A8%E5%AE%8F%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%E6%95%B0%E6%8D%AE.png)
我想要一个宏代码来检测数据是否被复制粘贴到 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
注意:
- 将此代码复制并粘贴为标准模块,并附上所需的工作表(您想要复制数据的源工作表)。
- 在此代码中
vbYellow
,Sheet2
&Range("A1")
是可编辑的。