在VBA中键入不匹配错误

时间:2013-09-19 13:42:09

标签: excel-vba vba excel

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行显示错误“类型不匹配”。

你可以帮忙吗?? ...

3 个答案:

答案 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行中的选择。

希望这有帮助。