1.Dim destbook As Workbook
2.Dim destsheet As Worksheet
3.Set destbook = Workbooks("Book1")
4.Set destsheet = destbook.Sheets(1)
5.Workbooks("Book1").Sheets("Sheet1").Range("C6").Select
6.ct = Range(Selection, Selection.End(xlDown)).count + 1
7.destbook.Activate
8.Workbooks(destbook).Sheets(destsheet).Range("A" + ct).Select
9.Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
这里,当我执行此代码时,它会在第8行显示错误“类型不匹配”。
你可以帮忙吗?? ...答案 0 :(得分:2)
您应该将+更改为&
工作簿(destbook).Sheets(destsheet).Range(“A”& ct)。选择
答案 1 :(得分:1)
您使用“destbook”和“destsheet”作为“工作簿”和“表格”的索引,但它们实际上是“工作簿”和“工作表”类型,因为您已在第1行和第2行中定义它们将第8行更改为:destsheet.Range("A" + ct).Select
。
答案 2 :(得分:0)
正如大多数人已经指出的那样,您需要更改引用所需目标单元格的方式。您可以切换到&符号(&),或者更改为Cell(row,col)引用,因为您只更新单个单元格(请参阅下面的代码)。您还应该考虑减少代码量,以提高效率。
Dim destbook As Workbook
Dim destsheet As Worksheet
Set destbook = Workbooks("Book1")
Set destsheet = destbook.Sheets(1)
'See my note below
destbook.Activate
destsheet.Range("C6").Select
ct = Range(Selection, Selection.End(xlDown)).Count + 1
destsheet.Cells(ct, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
注意: - 应更改第5行以使用变量destbook和destsheet。请注意,您需要将第7行移至最初激活工作簿,然后您可以参考工作表destsheet。 - 在“请参阅下面的注释”中,您可能应该从某处复制某些值,否则您将在PasteSpecial命令中遇到新错误。 - 您应该将第8行和第9行组合在一起,除非您计划在其他代码(此处未提供)中重新使用第8行中的选择。
希望这有帮助。