Есть ли оператор VBA, который проверяет, соответствует ли какой-либо из аргументов значение true? Мне не нравится синтаксис необходимости писать And
или Or
столько раз для нескольких аргументов, особенно для кнопок, которые имеют функцию «выбрать все/отменить выбор всех».VBA «Любой» логический оператор
Ex.
If checkbox1 = True Or checkbox2 = True or ... checkbox10 = True Then
Может ли это быть написана более сжато, как
If Any(checkbox1, checkbox2 , ..., checkbox10) Then
?
Кроме того, есть ли какие-либо соображения производительности для написания такого длинного оператора if? Я заметил, что после добавления этого макроса или кода VBA моя форма доступа загружается медленнее, не знаю, имеет ли это какое-либо отношение к этому.
EDIT
Я попытался тестирования предложенный ниже код
Public Sub text_x()
Dim a, b, c, d, e, f, g, h, i, result As Boolean
Dim t1, t2 As Single
a = False
b = False
c = False
d = False
e = False
f = False
g = False
h = False
i = True
t2 = Timer
For i = 1 To 10000000
result = False
If a Or b Or c Or d Or e Or f Or g Or h Or i Then
result = True
Else
result = False
End If
Next
t2 = Timer - t2
t1 = Timer
For i = 1 To 10000000
result = False
Select Case True
Case a, b, c, d, e, f, g, h, i
result = True
Case Else
result = False
End Select
Next
t1 = Timer - t1
MsgBox ("Timer1 " & t1 & vbCrLf & "Timer2 " & t2)
End Sub
Однако время зависит от того, какой я поставил первый в коде (t1 или t2). Почему это?
отбросить '=' часть. вы также можете сохранить их в массиве. –
Вы можете хранить элементы управления в массивах? –
да почему бы и нет ???? –