范围类的PasteSpecial方法在Function中失败

时间:2015-06-11 04:21:31

标签: excel vba excel-vba excel-2010

我一直在搜索我的问题,但仍无法找到解决方案。 我的目标是我想从工作簿A复制一个范围并将其粘贴到工作簿B. 在我的代码下面:

Function fillDistributor(ByVal kodis As String)

Dim wbThis As Workbook
Dim wbTarget As Workbook
Dim fileName As String

Set wbThis = Workbooks.Open(fileName:="D:\Work\Master Data\Testing JMC\" & kodis & "\" & kodis & " Manual Template.xlsx")
wbThis.Sheets("Distributor").Activate
Range("B13:S14").Select
Selection.Copy

Set wbTarget = Workbooks.Open(fileName:="D:\Work\Master Data\Testing JMC\" & kodis & "\" & kodis & "-Distributor.xlsx")
wbTarget.Sheets("Sheet1").Activate
Range("A1:R2").Select
Selection.PasteSpecial Paste:=xlPasteAll

End Function

错误是

  

范围类的Pastespecial方法失败。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您正在将此作为一种功能编写。它需要是一个子。函数旨在将值返回给调用进程。 Subs旨在对工作簿/工作表中的范围或变量执行操作。

Sub fillDistributor(kodis As String)
    Dim wbThis As Workbook, wbTarget As Workbook
    'Dim fileName As String  '<- what is this used for?

    Set wbThis = Workbooks.Open(fileName:="D:\Work\Master Data\Testing JMC\" & kodis & "\" & kodis & " Manual Template.xlsx")
    Set wbTarget = Workbooks.Open(fileName:="D:\Work\Master Data\Testing JMC\" & kodis & "\" & kodis & "-Distributor.xlsx")

    wbThis.Sheets("Distributor").Range("B13:S14").Copy _
      Destination:=wbTarget.Sheets("Sheet1").Range("A1")

    wbThis.Close
    wbTarget.Close

End Sub

一个sub可以接受像函数一样传入的参数。