有什么办法可以缩短VBA中的Like语句
func mqtt(_ mqtt: CocoaMQTT, didConnectAck ack: CocoaMQTTConnAck) {
debugPrint("did Connect Ack: \(ack)")
mqtt.publish("/led", withString: "ligar")
}
答案 0 :(得分:6)
您可以通过使用方括号将所有这些比较组合到两个语句中,方括号匹配其中的任何一个字符:
If ibasic Like "[ABF][1-8]*" OR ibasic Like "[CS]1*" Then
破折号在此处表示一系列字符。
答案 1 :(得分:1)
在Array()
中传递选项,在单独的函数中循环通过它们并返回结果:
Public Sub TestMe()
Dim myInput As String: myInput = "A243"
Dim myLikes As Variant
myLikes = Array("A1*", "A2*", "A3*")
Debug.Print CheckLikes(myLikes, myInput)
End Sub
Public Function CheckLikes(myLikes As Variant, myInput As String) As Boolean
Dim myVars As Variant
For Each myVars In myLikes
If myInput Like myVars Then
CheckLikes = True
Exit For
End If
Next
End Function
答案 2 :(得分:1)
您可以使用Select Case
语句列出备用项,首先提取左侧的两个字符:
data = "A100"
Select Case Left(data, 2)
Case "A1", "A2": 'etc.
Debug.Print True
Case Else:
Debug.Print False
End Select
答案 3 :(得分:1)
尝试
If CBool(InStr(1, "|A1|A2|A3|A4|A5|A6|", "|" & Left(ibasic, 2) & "|", vbTextCompare)) Then
'true, do something ...
End If