![Excel VBA - 复制单元格值*无需*数据验证](https://linux22.com/image/1572031/Excel%20VBA%20-%20%E5%A4%8D%E5%88%B6%E5%8D%95%E5%85%83%E6%A0%BC%E5%80%BC*%E6%97%A0%E9%9C%80*%E6%95%B0%E6%8D%AE%E9%AA%8C%E8%AF%81.png)
我在 Excel VBA 中将单元格从一个工作表复制到另一个工作表时遇到了一个小问题。源工作表包含存储在一行中的单个客户记录。目标工作表是此类记录的集合,逐行堆叠。为了保密起见,将它们分开保存很重要。
我创建了一个宏,将源复制到目标工作簿,从源复制单元格,然后将其粘贴到目标工作表的第一个空行中。由于它们都包含相同的信息,因此我对每个工作表中的相应单元格(主要是下拉列表)应用了相同的数据验证。
但是,源工作表和目标工作表来自不同的工作簿。当我将单元格从源复制到目标时,数据验证随之出现。粘贴到目标中的单元格现在引用源中的单元格来填充其下拉列表。每次打开目标时,链接通常会中断,从而破坏下拉列表并提示用户。
我想做的是复制值在源单元格中,无需复制数据验证。就像我之前说的,每个工作表中的数据验证都是相同的(除了它们引用工作表的不同工作簿),所以所有值都应该验证。
下面是我复制的代码示例:
Sub copyNoValidation(wkbDestination as ThisWorkbook, oRange as Range, cellDest As Range)
wkbDestination.Worksheets("Source").Range(oRange).Copy
cellDest.PasteSpecial xlPasteValues
End Sub
感谢您的帮助!
答案1
复制然后删除目标中的任何 DV 都很容易:
Sub KopyPaste()
Dim r1 As Range, r2 As Range
Set r1 = Range("A1")
Set r2 = Range("A2")
r1.Copy r2
r2.Validation.Delete
End Sub