Присвойте число членам массива и выберите самый высокий - PullRequest
0 голосов
/ 27 июня 2019

У меня есть пользовательская форма в VBA, которая позволяет пользователю выбирать несколько опций (прибл. 1-10 пунктов).Все выбранные элементы хранятся в массиве, который может иметь различный размер.Я ищу способ присвоения всем элементам, которые были выбраны, числовых значений (заданных существующей иерархией), а затем возможности выбрать элемент с наибольшим значением.Есть ли способ, как подойти к этой проблеме?

1 Ответ

1 голос
/ 27 июня 2019

Создайте двумерный массив вместо 1-мерного.

Например, если ваш массив выглядел как

Dim MyArr(2) As Variant
MyArr(0) = "Member1"
MyArr(1) = "Member2"
MyArr(2) = "Member3"

Сделать двумерным, чтобы назначить числовое значение для каждого члена

Dim MyArr(2, 1) As Variant

MyArr(0, 0) = "Member1"
MyArr(0, 1) = 1

MyArr(1, 0) = "Member2"
MyArr(1, 1) = 2

MyArr(2, 0) = "Member3"
MyArr(2, 1) = 3

enter image description here


(Редактировать в соответствии с комментариями)

Используйте 2 различных массива для элементов и значений, чтобы легче было найти максимальное значение с помощью WorksheetFunction.

Option Explicit

Sub test()
    Dim MyArrMembers(2) As String
    Dim MyArrValues(2) As Long

    MyArrMembers(0) = "Member1"
    MyArrValues(0) = 1

    MyArrMembers(1) = "Member2"
    MyArrValues(1) = 100

    MyArrMembers(2) = "Member3"
    MyArrValues(2) = 3

    'find max value
    Dim MaxVal As Long
    MaxVal = Application.WorksheetFunction.Max(MyArrValues)

    'locate max value
    Dim ArrIndex As Long
    ArrIndex = Application.WorksheetFunction.Match(MaxVal, MyArrValues, 0) - 1

    'output member name
    Debug.Print MyArrMembers(ArrIndex) 'returns Member2
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...