VBA Excel错误1004粘贴值问题
我对VBA Excel错误1004粘贴值问题,vba,excel,Vba,Excel,我对VBA有点陌生,我有一个无法解决的问题,在前面的问题中找不到正确的解决方案。事实上,这看起来很简单。我想在工作表中复制一个名为“Blad3”的范围,并在工作表中粘贴名为“Blad1”的值。这是我做的,哪里出了问题 ActiveSheet.Cells(dattel, 4).Select ActiveCell.Range("A1:J1").Copy Sheets("Blad1").Select Cells(8 + aantkk, 6).Select A
VBA
有点陌生,我有一个无法解决的问题,在前面的问题中找不到正确的解决方案。事实上,这看起来很简单。我想在工作表中复制一个名为“Blad3”的范围,并在工作表中粘贴名为“Blad1”的值。这是我做的,哪里出了问题
ActiveSheet.Cells(dattel, 4).Select
ActiveCell.Range("A1:J1").Copy
Sheets("Blad1").Select
Cells(8 + aantkk, 6).Select
ActiveSheet.Unprotect
' ActiveCell.PasteSpecial xlPasteValues
Selection.PasteSpecial Paste:=xlValue
' ActiveSheet.Paste
ActiveSheet.Protect
可以试试这个吗
Sub Demo()
Dim srcSht As Worksheet, destSht As Worksheet
Dim rng As Range
Set srcSht = ThisWorkbook.Sheets("Blad3") 'this is source sheet
Set destSht = ThisWorkbook.Sheets("Blad1") 'this is destination sheet
With destSht
.Unprotect 'unprotect sheet Blad1
Set rng = srcSht.Range("A1:J1") 'set range to copy
.Cells(8 + aantkk, 6).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value 'paste only values
.Protect 'protect sheet Blad1
End With
End Sub
应避免选择
和激活。有关详细信息,请参阅。这对您有用吗
图纸(“Blad3”)。范围(“A1:J1”)。副本
板材(“Blad1”)。范围(“A1:J1”)。粘贴特殊粘贴:=xlValue
我在一本新的工作簿上测试了它,它似乎工作得很好 首先,解决您的困境的真正答案是使用UserInterfaceOnly:=True参数,这样您就不必取消对它的保护,就可以使用VBA代码编写值
运行一次
sub protectBlad1FromUser()
worksheets("Blad1").unprotect
worksheets("Blad1").protect UserInterfaceOnly:=True
end sub
现在,您可以在VBA中对Blad1工作表执行任何操作,同时保护它不受用户攻击
至于你的原始代码,它是混乱的。如果Blad3工作表上的.Cells(dattel,4)
为D4,则ActiveCell.Range(“A1:J1”).Copy
不会复制A1:J1;它复制D4:M4。在任何情况下,直接值传输都比复制、粘贴特殊值更有效
dim rng as range
set rng = worksheets("blad3").cells(dattel, 4).resize(1, 10) '<~~ figure out what this is supposed to be
with worksheets("Blad1")
.cells(8 + aantkk, 6).resize(rng.rows.count, rng.columns.count) = rng.value
end with
dim rng as范围
设置rng=worksheets(“blad3”)。单元格(dattel,4)。调整大小(1,10)'是的,请回答哪一行出现错误以及您收到了什么错误消息如果知道Unprotect
结束了CutCopyMode
,粘贴将无法工作,这并不令人惊讶。但你的问题的关键是。完成后,你应该明白了。谢谢你的回答。我现在有错误438当我键入此代码我道歉;我应该在发帖前把它整理好。我只是把它写在我的头顶上;结果我划掉了下部解剖区域的底部。将rng.values
更改为rng.value
,如上所述。