Переберите элементы по элементам и исключите значение следующим образом:
Function ExcludeAValue(Arr As Variant, Var As Variant) As Variant
Dim Arr2() As Variant, i As Long
ReDim Arr2(0 To 0)
For i = LBound(Arr) To UBound(Arr)
If Arr(i) <> Var Then
If Not IsEmpty(Arr2(UBound(Arr2))) Then ReDim Preserve Arr2(0 To UBound(Arr2) + 1)
Arr2(UBound(Arr2)) = Arr(i)
End If
Next
ExcludeAValue = Arr2
End Function
Убедитесь, что при передаче паролей используется тот же тип данных.
Примеры:
Sub TestUsingString()
Dim Targetkeys As String, Excludekey As String, TargetkeyArr As Variant
Targetkeys = "566, 777, 888, 999, 1000"
Excludekey = "566"
TargetkeyArr = ExcludeAValue(Split(Targetkeys, ","), Excludekey)
End Sub
Sub TestUsingLong()
Dim Targetkeys(0 To 4) As Long, Excludekey As Long, TargetkeyArr As Variant
Targetkeys(0) = 566
Targetkeys(1) = 777
Targetkeys(2) = 888
Targetkeys(3) = 999
Targetkeys(4) = 1000
Excludekey = 566
TargetkeyArr = ExcludeAValue(Targetkeys, Excludekey)
End Sub
Sub BADTest()
Dim Targetkeys As String, Excludekey As Long, TargetkeyArr As Variant
'This one will not exclude it because 566 (long) <> "566" (string)
Targetkeys = "566, 777, 888, 999, 1000"
Excludekey = 566
TargetkeyArr = ExcludeAValue(Split(Targetkeys, ","), Excludekey)
End Sub