简单的Excel VBA宏失败

时间:2014-05-20 07:30:51

标签: excel vba excel-vba

我有以下简单的宏来从已关闭的工作表中复制数据。代码在VBA编辑器中运行良好,但在通过宏从Excel运行时失败并出现下标错误。粘贴特殊声明似乎是问题。

我无法看到问题出在哪里,有人可以帮忙吗?

Dim wsMaster As Worksheet
Set wsMaster = Worksheets("Master Data")
Dim lastrow As Long

Dim Files As String
   Files = "Download.xlsx"

Dim filepath As String
   filepath = "C:\users\ms612533\desktop\"

Application.ScreenUpdating = False

wsMaster.Activate
Cells.Select
Selection.Clear

Workbooks.Open (filepath & Files)
lastrow = Worksheets("Global").UsedRange.Rows.Count
Worksheets("Global").Range("A1:V" & lastrow).Copy _
wsMaster.Range("B1")
Worksheets("Global").Range("CV1:cv" & lastrow).Copy
wsMaster.Range("a1").PasteSpecial (xlValues)**
Application.CutCopyMode = False

ThisWorkbook.Activate
Call CloseAll

Application.ScreenUpdating = True

End Sub


Sub CloseAll()
' Close all but the active workbook

 Dim wkbk As Workbook

 Application.ScreenUpdating = False

 For Each wkbk In Application.Workbooks
     If wkbk.Name <> ActiveWorkbook.Name Then
         wkbk.Close SaveChanges:=False
     End If
 Next

 Application.ScreenUpdating = True

End Sub

2 个答案:

答案 0 :(得分:0)

我认为PasteSpecial行有问题:当我使用宏录制器时,我会得到这样的结果:

wsMaster.Range("a1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

我认为我们可以在第一个之后忽略参数。然后我们有这个:

wsMaster.Range("a1").PasteSpecial Paste:=xlPasteValues

请注意,参数周围没有parens(()):PasteSpecial不会返回任何内容,因此应将其视为函数。这可能是下标问题的来源。

另请注意,来自xlPasteType枚举的参数与您的值略有不同。

答案 1 :(得分:0)

从按钮调用宏时,代码似乎工作正常,但它不能从快捷方式工作。我会把它归结为Excel的“功能”并继续前进。