С другим листом книги сделайте это, что говорит этот макрос - PullRequest
0 голосов
/ 13 мая 2019

У меня открыта книга, я пытаюсь что-то сделать с другой книгой, но вызов макроса в операторе «С» просто заставляет его действовать на открытую книгу, а не на другую книгу, которую я хочу, чтобы она выполнялавещи в.

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

Ответы [ 2 ]

1 голос
/ 13 мая 2019

Отправьте объект рабочего листа, для которого вы хотите запустить этот код, как часть параметров функции:

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 имеет контекст только внутри подпрограммы / функции, в которой он вызывается. Он не живет через вызов функции.

0 голосов
/ 13 мая 2019

Затем обратитесь к книге по имени.

У меня есть макрос, который работает между двумя книгами, и у меня есть это:

Dim wbmaster As Workbook                     'name for master workbook
Dim wbtarget As Workbook                      'name for student workbook

wbmaster.Sheets("Answers_Source").Range("h1:z160").Copy
wbtarget.Sheets("ANSWERS").Range("h1:z160").PasteSpecial

Так что он точно знает, что с ним делать.

...