Как найти самый большой индекс элемента в массиве управления? - PullRequest
3 голосов
/ 01 февраля 2012

Я динамически загружаю и выгружаю массив командных кнопок из формы.

Я могу сделать это:

    Dim UnloadIndex As Integer
    For UnloadIndex = 1 To 20
        Unload frmMain.cmdAction(UnloadIndex)
    Next

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

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

Любые предложенияпожалуйста ...

Ответы [ 3 ]

8 голосов
/ 01 февраля 2012

Используйте UBound(), который возвращает максимальный доступный индекс для указанного измерения массива.

Dim UnloadIndex As Integer 
For UnloadIndex = LBound(frmMain.cmdAction) To UBound(frmMain.cmdAction)
    Unload frmMain.cmdAction(UnloadIndex) 
Next 
5 голосов
/ 01 февраля 2012

Если они не последовательные, вы также можете сделать:

Dim Control as CommandButton
For Each Control in frmMain.cmdAction
  If Control.Index > 0 Then
    Unload Control
  End If
Next
0 голосов
/ 03 марта 2017
    Dim UnloadIndex As Integer 
For UnloadIndex = LBound(frmMain.cmdAction.LBound) To UBound(frmMain.cmdAction.UBound)
    Unload frmMain.cmdAction(UnloadIndex) 
Next

Я обнаружил, что принятый способ ответа дает ошибку компиляции

ожидаемый массив

Использование точечной нотации вместо этого сработало для меня.

...