Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel错误1004粘贴值问题_Vba_Excel - Fatal编程技术网

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
,如上所述。