Можно ли вернуть переменную типа листа в функцию? - PullRequest
0 голосов
/ 15 мая 2019

В этом проекте, который я разрабатываю, я создал много Subs, которые все используют одни и те же три книги. Но есть ли лучший способ использовать листы этих книг без необходимости записывать их каждый раз, когда я создаю новый Sub? Я попытался вернуть его в функцию, но она не работает.

Function defineWorksheet() As Worksheet

Dim wk_Base_18 As Excel.Workbook
Dim ws_18 As Excel.Worksheet

Set wk_Base_18 = Excel.Workbooks("2019.01.03.xlsb")
Set ws_18 = wk_Base_18.Worksheets("Planilha1")

ws_18

End Function

ошибка 91

Ответы [ 2 ]

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

Да, вы можете объявить их как глобальную переменную.

Public ws1 As Worksheet

Затем создать экземпляр глобальной переменной во время события загрузки приложения приложения

Private Sub Workbook_Open()
     Set ws1 = ThisWorkbook.Sheets("YourSheetName")
End Sub

И теперь вы можете обратиться к нему через переменную, например.

Dim x as Integer: x = ws1.Range("B5")
0 голосов
/ 15 мая 2019

Общая идея звучит разумно, вам просто нужно создать одну функцию для объекта:

Function wk_Base_18() as workbook
    Set wk_Base_18 = Excel.Workbooks("2019.01.03.xlsb")
End Function

Function ws_18() as worksheet
    Set ws_18 = wk_Base_18.Worksheets("Planilha1")
End Function

Затем, когда вы захотите использовать переменную ws_18 или wk_Base_18, вы будете вызывать эти же функции.

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