Как установить мастер-объект Workbooks? - PullRequest
0 голосов
/ 27 мая 2019

Я думал, возможно ли установить главную рабочую книгу в Excel VBA и получить доступ к ней по всем процедурам и функциям?

Поскольку я довольно новичок в VBA, я не понимаю синтаксис, который использует VBA ..

Dim MasterWB as Workbook
Set MasterWB = Workbooks.Open("Path to my Workbook")

Но если я захочу получить к нему доступ в другой процедуре или функции, я получу ошибку определения объекта.

Я не хочу объявлять объект в каждой подпрограмме или функции. Большое спасибо!

1 Ответ

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

Есть два способа сделать это:

Хорошая практика:

Option Explicit
Sub Test()

    Dim MasterWB As Workbook
    Set MasterWB = Workbooks.Open("Path")
    UseWb MasterWB

End Sub
Sub UseWb(wb As Workbook)

    wb.Close

End Sub

Вы не должны использовать практику:

Option Explicit
Public MasterWB As Workbook
Sub Test()

    Set MasterWB = Workbooks.Open("Path")
    UseWb MasterWB

End Sub
Sub UseWb()

    wb.Close

End Sub

Первыйпозволяет передавать Workbook Variable в качестве параметра другим функциям, в этом случае вы не можете использовать ByVal, но другие переменные, такие как Integer или Long, могут использоваться как ByVal вместо (по умолчанию) ByRef.

ByVal означает, что вы передаете только значение этой переменной, поэтому вы не будете изменять его в функции.

ByRef означает, что вы передадите ссылку, поэтому другая функцияможет изменить эту исходную переменную.

Второй способ позволяет использовать переменную только в качестве ссылки, поэтому могут быть изменения в ней без предварительного уведомления.

Надеюсь, это немного прояснит ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...