Привязка нескольких словарей к модулю книги - PullRequest
0 голосов
/ 18 ноября 2018

Я бы хотел вызвать отдельные Sub процедуры из модуля рабочей книги ThisWorkbook для выполнения вычислений при открытии рабочей книги.

Я использую раннее связывание для создания словарей, и с этого момента Sub Я звоню следующему Sub и ссылаюсь на словари.

Можно ли поместить всю процедуру создания словаря в отдельный модуль, вызвать ее из модуля рабочей книги ThisWorkbook, а затем обратиться к словарям в следующей процедуре Sub, которая вызывается из модуля рабочей книги?

Вот что у меня есть:

'----------------------------
'Workbook module ThisWorkbook
'----------------------------

Option Explicit
Private Sub Workbook_Open()

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
End With

Dim MRMT As Workbook
Dim ER As Worksheet

Set MRMT = Excel.Workbooks("MRMT")
Set ER = MRMT.Worksheets("Sheet1")

With ER
    .Name = "Exposure Report"
End With

Import_Exposure_Report MRMT, ER

' I would like to have "Create_Dictionaries" procedure in a separate 
' module and then pass the dictionaries to the Sub below from this workbook module

Import_Historical_Data MRMT, ER  'Key1, Key2, Key3 ect.

With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
    .EnableEvents = True
End With

End Sub

1 Ответ

0 голосов
/ 01 декабря 2018
Option Explicit
Public Sub Workbook_Open()

    With Application
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
    End With

    Dim MRMT As Workbook
    Dim ER As Worksheet

    Dim CommoditiesDict As New Scripting.Dictionary
    Dim IndexesDict As New Scripting.Dictionary
    Dim StocksDict As New Scripting.Dictionary
    Dim CryptoDict As New Scripting.Dictionary
    Dim BondsDict As New Scripting.Dictionary
    Dim FXDict As New Scripting.Dictionary

    Set MRMT = Excel.Workbooks("MRMTool_V7")
    Set ER = MRMT.Worksheets("Sheet1")

    ER.Name = "Exposure Report"

    With MRMT

        Import_Exposure_Report MRMT, ER

        Create_Dictionaries BondsDict, CryptoDict, CommoditiesDict, IndexesDict, FXDict, StocksDict, MRMT

        Populate_Historical_Data BondsDict, CryptoDict, CommoditiesDict, IndexesDict, FXDict, StocksDict, MRMT, ER

    End With

    With Application
        .Calculation = xlCalculationAutomatic
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With

End Sub
...