首页 > 解决方案 > 在另一个工作簿上运行宏

问题描述

我想在我的宏中引用另一个工作簿,所以宏中的函数也会在另一个工作簿上运行

在其中一张工作表上的一个工作簿中有一个按钮,需要在列表顶部(第 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

标签: excelvba

解决方案


您需要打开文件才能对其进行更改。

代替

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

推荐阅读