在另一个工作簿上运行宏

时间:2019-08-27 11:53:54

标签: excel vba

我想在宏中引用另一个工作簿,因此宏中的函数也将在另一个工作簿上运行

其中一张工作簿中的一个工作簿上有一个按钮,需要剪切并将整行插入列表的顶部(第2行)。它也需要在另一张纸上进行工作簿。

我的主要问题是参考文件。我得到的主要错误是“运行时错误'9':下标超出范围”或“对象或方法无效”

我拥有的当前代码在发表评论之前一直有效。

Private Sub CommandButton2_Click()
Dim wbA As Workbook
Set wbA = Workbooks("MFDT Dashboard 3.0 PRE-alpha.xlsm")
'Loop through workbook

For Each ws In ThisWorkbook.Sheets
    'Color cells
    If ws.Rows(ActiveCell.Row).Interior.Color = RGB(255, 0, 0) Then
    ws.Rows(ActiveCell.Row).Interior.Color = RGB(255, 255, 255)
    Else
    ws.Rows(ActiveCell.Row).Interior.Color = RGB(255, 0, 0)
    End If
    'Cut and insert
    If Not ActiveCell.Row = 2 Then
    ws.Rows(ActiveCell.Row).Cut
    ws.Rows(2).Insert Shift:=xlDown
    End If

Next ws
'after this it stops working.

 wbA.Sheets("Enginlist").Rows(ActiveCell.Row).Cut
 wbA.Sheets("Enginlist").Rows(2).Insert Shift:=xlDown

End Sub

1 个答案:

答案 0 :(得分:1)

您需要打开文件进行更改。

替换

Set wbA = Workbooks("MFDT Dashboard 3.0 PRE-alpha.xlsm")

Set wbA = Workbooks.Open("PATH\MFDT Dashboard 3.0 PRE-alpha.xlsm") ' add path to file also

然后在宏末尾,您需要关闭文件

wbA.close

但是我总是做两次以确保没有关闭文件。

on error resume next
wbA.close
wbA.close
on error goto 0