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

你能帮忙吗??...

4

3 回答 3

2

您应该将 + 更改为 &

工作簿(destbook).Sheets(destsheet).Range("A" & ct).Select

于 2013-09-19T14:30:55.327 回答
1

正如大多数人已经指出的那样,您需要更改引用所需目标单元格的方式。您可以切换到与号 (&),或者更改为仅 Cells(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 行向上移动以最初激活您的工作簿,然后您可以引用您的工作表目标表。- 在“请参阅下面的注释”中,您可能应该从某处复制一些值,否则您将在 PasteSpecial 命令中遇到新错误。- 您应该将第 8 行和第 9 行组合在一起,除非您计划在其他代码中重用第 8 行的选择(您没有在此处提供)。

希望这可以帮助。

于 2013-09-19T20:06:06.573 回答
1

您正在使用“destbook”和“destsheet”作为“Workbooks”和“Sheets”的索引,但它们实际上是“Workbook”和“Worksheet”类型,因为您在第 1 行和第 2 行中定义了它们。更改行8 至:destsheet.Range("A" + ct).Select.

于 2013-09-19T13:47:13.733 回答