Какую область должны иметь мои объекты данных в VBA - PullRequest
0 голосов
/ 26 января 2011

Я заполняю набор массивов из данных листа. Затем я манипулирую данными, прежде чем записывать их на другой лист (см. Пример ниже).

Если я хочу затем снова использовать те же данные рабочего листа, как избежать переписывания кода, который заполняет массивы из рабочего листа?

  • Должен ли я написать свой код за одну длинную процедуру, чтобы мне не нужно было заново заполнять массивы?
  • Должен ли я сделать массивы глобальными, чтобы их можно было повторно использовать в нескольких процедурах?
  • Должен ли я передавать массивы только процедурам, которые нуждаются в них в длинном списке аргументов?
  • Есть ли другие варианты?

Sub ManipulateData()
    Dim people(1 To MAX_DATA_ROW) As String
    Dim projects(1 To MAX_DATA_ROW) As String
    Dim startDates(1 To MAX_DATA_ROW) As Date
    Dim endDates(1 To MAX_DATA_ROW) As Date
    ...
    Loop through worksheet cells to populate arrays
    ...
    Do something with array data

End Sub

1 Ответ

1 голос
/ 26 января 2011

Я бы создал класс, который содержал бы массивы в виде переменных private, а затем создал бы один общедоступный подпрограммный файл с именем Initialise или аналогичный, который загружал бы все, а затем другие подпрограммы / функции по мере необходимости, чтобы предоставить вам необходимую функциональность.

Таким образом, вам не нужно передавать массивы, но они все еще не глобальны.Проблема в том, чтобы сделать их глобальными, заключается в том, что существует больший риск того, что какой-то другой код где-то еще изменит массивы таким образом, что ваш код не ожидает, что может быть очень трудно найти, поскольку это может быть где-нибудь в кодовой базе.

Вот введение в классы в Excel VBA.

...