Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Принадлежность переменной к множеству  [new]
VistaSV30
Member

Откуда: Балашиха
Сообщений: 141
Добрый день!

Подскажите есть в VB возможность проверить, что переменная принадлежит к множеству значений?
Вместо
If i=1 Or i=5 Or i=7 Then ...



Возможно ли написать, что-то типа
If i in(1, 5, 7) Then ...



Спасибо!
8 май 19, 10:44    [21880742]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
Панург
Member

Откуда: настоящему индейцу завсегда везде ништяк
Сообщений: 4169
VistaSV30, как вариант
...
Select Case i
    Case 1, 5, 7, 10 to 20'последнее интервал полностью с 10 до 20 включительно
        
End Select
...
8 май 19, 11:12    [21880767]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5744
6400575
В данном примере инструкция Select Case используется для анализа значения переменной. Второе предложение Case содержит значение анализируемой переменной и следовательно выполняется только инструкция, связанная с этим предложением.
Dim Number
Number = 8	' Инициализирует переменную.
Select Case Number	' Анализирует число.
Case 1 To 5	' Число между 1 и 5.
	Debug.Print "Между 1 и 5"
' Это предложение Case является единственным истинным.
Case 6, 7, 8	' Число между 6 и 8.
	Debug.Print "Между 6 и 8"
Case Is > 8 And Number < 11	' 9 или 10.
Debug.Print "Больше 8"
Case Else	' Другие значения.
	Debug.Print "Вне интервала 1 -- 10"
End Select
8 май 19, 11:39    [21880800]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 241
VistaSV30
Возможно ли написать, что-то типа
If i in(1, 5, 7) Then ...
В Аксе можно и так:
If EVal(i & " In (1, 5, 7)") Then ...

Удобно, если список вариантов у вас в переменной.
8 май 19, 12:23    [21880847]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
VistaSV30
Member

Откуда: Балашиха
Сообщений: 141
Спасибо всем!
Пока остановлюсь на использовании Case
8 май 19, 14:54    [21881136]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
Swa111
Member

Откуда:
Сообщений: 92
у себя в проекте использую такую функцию
Function InSetInner(spKey As Variant, apArgs As Variant) As Boolean
 Dim bvIsNull As Boolean
 Dim i As Integer
 
 If IsEmpty(spKey) Then spKey = Null
 bvIsNull = IsNull(spKey)
 InSetInner = True
 For i = LBound(apArgs) To UBound(apArgs)
  If IsArray(apArgs(i)) Then
   If InSetInner(spKey, apArgs(i)) Then Exit Function
  Else
   If apArgs(i) = spKey Or (bvIsNull And (IsNull(apArgs(i)) Or IsEmpty(apArgs(i)))) Then Exit Function
  End If
 Next
 InSetInner = False
End Function

Function InSet(spKey As Variant, ParamArray apArgs() As Variant) As Boolean
 Dim v As Variant
 v = apArgs
 InSet = InSetInner(spKey, v)
End Function


Использовать можно так

If InSet(i, 1, 5, 7) Then...


В качестве параметра можно передать массив в том числе и многомерный. В отличии от нормальной тритичной логики в этой функции inSet(Null,Null) выдаст True. Значения Empty рассматриваются как Null.
8 май 19, 17:15    [21881354]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
MrShin
Member

Откуда:
Сообщений: 1214
Swa111,

А для чего у вас 2 функции используются?
9 май 19, 06:38    [21881615]     Ответить | Цитировать Сообщить модератору
 Re: Принадлежность переменной к множеству  [new]
Swa111
Member

Откуда:
Сообщений: 92
MrShin,

Для унификации работы с массивами
12 май 19, 19:02    [21882856]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить