Làm thế nào người ta có thể đạt được:Bắt chước "IN" Hành
if X in (1,2,3) then
thay vì:
if x=1 or x=2 or x=3 then
Nói cách khác, làm thế nào người ta có thể bắt chước tốt nhất các nhà điều hành IN
trong VBA cho excel?
Làm thế nào người ta có thể đạt được:Bắt chước "IN" Hành
if X in (1,2,3) then
thay vì:
if x=1 or x=2 or x=3 then
Nói cách khác, làm thế nào người ta có thể bắt chước tốt nhất các nhà điều hành IN
trong VBA cho excel?
Tôi không nghĩ rằng có một giải pháp rất thanh lịch.
Tuy nhiên, bạn có thể thử:
If Not IsError(Application.Match(x, Array("Me", "You", "Dog", "Boo"), False)) Then
hoặc bạn có thể viết chức năng riêng của bạn:
Function ISIN(x, StringSetElementsAsArray)
ISIN = InStr(1, Join(StringSetElementsAsArray, Chr(0)), _
x, vbTextCompare) > 0
End Function
Sub testIt()
Dim x As String
x = "Dog"
MsgBox ISIN(x, Array("Me", "You", "Dog", "Boo"))
End Sub
bạn đã thử
eval("3 in(1,2,3,4,5)")
Điều này sẽ hoạt động. –
Tôi nhận được "phụ hoặc chức năng không được xác định" - không biết nếu điều này là bởi vì tôi đang ở trong VBA (không VB)? đã chỉnh sửa câu hỏi ... –
Đây là chức năng Truy cập VBA. Xin lỗi tôi đã không thấy rằng bạn đã đề cập excel VBA. – THEn
Có gì mà tôi biết về .
Tôi thường sử dụng một InArray() chức năng nhà ủ như một tại http://www.freevbcode.com/ShowCode.asp?ID=1675
Bạn cũng có thể tạo ra một phiên bản đó lặp qua mảng thay vì concatenating, nếu đó là thích hợp hơn để kiểu dữ liệu của bạn.
Bạn cũng có thể thử các tuyên bố TRƯỜNG HỢP thay vì NẾU
Select Case X
Case 1 To 3
' Code to do something
Case 4, 5, 6
' Code to do something
Case 7
' Code to do something
Case Else
' More code or do nothing
End Select
Bạn cũng có thể sử dụng chức năng lọc như mô tả here
Tôi đã viết nó bây giờ ...
Public Function IsInArray(FindValue As Variant, ParamArray arrEmailAttachment()) As Boolean
Dim element As Variant
For Each element In arrEmailAttachment
If element = FindValue Then
IsInArray = True
Exit Function
End If
Next element
IsInArray = False
End Function
Bạn không thể chỉ cần tránh chức năng và sử dụng một cái gì đó như: 'InStr (1, "MeYouDogBoo", x) '? – redOctober13
@ redOctober13 điều này có thể hoạt động nếu bạn tách các mục danh sách bằng dấu phân cách không thể tìm thấy trong x. Nếu không, YouDo sẽ kích hoạt InStr. – mrdaddychops