2012-03-13 3 views
2

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

так я определяю мой массив в модуле класса

Private pTestArray() As String 

и свойства для получения и установки значений

Private Property Get TestArrayValue(index As Long) As String 
    TestArrayValue = qTestArray(index) 
End Property 

Private Property Let ArrayValue(index As Long, strValue As String) 
    pTestArray(index) = strValue 
End Property 

, но я не могу найти способ ReDim массив. любые подсказки? Thanks C

+0

Пожалуйста, используйте кнопку кода '{}', чтобы отформатировать код и сделать ваши сообщения разборчивыми. – Fionnuala

ответ

5

Вы хотите изменить размер при назначении? то вы можете проверить & обрабатывать границы в Let;

Private Property Let ArrayValue(index As Long, strValue As String) 
    If index > UBound(pTestArray) Then ReDim Preserve pTestArray(index) 
    pTestArray(index) = strValue 
End Property 

Вам также нужно сначала измерение с redim pTestArray(0) в Class_Initialize случае.

+0

спасибо большое Alex, вот что я искал – user1266138

+0

+1 хорошее решение, вы также можете посмотреть на использование коллекции – SWa

Смежные вопросы