首页 > 解决方案 > 用另一个工作表做这个宏说要做的事情

问题描述

我打开了一个工作簿,我正在尝试对另一个工作簿执行操作,但是在 With 语句中调用宏只会使其作用于我打开的工作簿,而不是我希望它执行的其他工作簿。

Sub Format_Another_Worksheet()

    Dim wb As Workbook

    Set wb = GetObject("C:\Users\john\Desktop\anotherworkbook.xls")

    With wb.Worksheets("Sheet1")
    .Cells.Font.Size = 14

    Call myfunction("A")

    End With

End Sub

Sub myfunction(col As String)
    Range(col & "1").Font.Size = 30
End Sub

我有数百个我需要使用的 myfunction 宏并且不想进入并开始向它们全部附加东西,事实上我无法触及这数百个其他 myfunction 宏

标签: excelwith-statement

解决方案


将要在其上运行此代码的工作表对象作为函数参数的一部分发送:

Sub Format_Another_Worksheet()

    Dim wb As Workbook

    Set wb = GetObject("C:\Users\john\Desktop\anotherworkbook.xls")

    With wb.Worksheets("Sheet1")
    .Cells.Font.Size = 14

    Call myfunction("A", wb.Worksheets("Sheet1"))

    End With

End Sub

Sub myfunction(col As String, ws as Worksheet)
    ws.Range(col & "1").Font.Size = 30
End Sub

显然,这与 无关With,但是您With在调用它的子/函数中只有上下文。它不能通过函数调用继续存在。


推荐阅读