我已经编写了这段代码,但是,我的if/ each语句树非常长,而且是重复的,只对每种情况的变量设置为几个值。我已经阅读了使用VBA Select Case
语句在测试多个条件时使用的好处,在我的情况下测试wsName
是什么和rate_value
是什么。下面是我的代码当前的样子,如果有人可以提供一个大纲,说明我如何使用Select Case
方法或使用一个非常受欢迎的VLOOKUP表。作为参考,在调用这些行之前定义了wsName
和rate_value
。
If wsName = "Test-3" Then
If rate_value < 50 Then
snapdownvol = 95
ElseIf rate_value = 50 Then
snapdownvol = 98
sweep_value = 49.8
sweep_value_max = 50.2
ElseIf rate_value = 100 Then
snapdownvol = 110
sweep_value = 99.8
sweep_value_max = 100.2
ElseIf rate_value = 200 Then
snapdownvol = 110
sweep_value = 199.4
sweep_value_max = 200.4
ElseIf rate_value > 200 Then
MsgBox "Rate Value for " & sysnum & " is greater than 200 kHz. Rate Min and Max will be 0."
End If
ElseIf wsName = "Test-6" Then
If rate_value < 50 Then
snapdownvol = 98
ElseIf rate_value = 50 Then
snapdownvol = 98
sweep_value = 49.8
sweep_value_max = 50.2
ElseIf rate_value = 100 Then
snapdownvol = 125
sweep_value = 99.8
sweep_value_max = 100.2
ElseIf rate_value = 200 Then
snapdownvol = 125
sweep_value = 199.4
sweep_value_max = 200.4
ElseIf rate_value > 200 Then
MsgBox "Rate Value for " & sysnum & " is greater than 200 kHz. Rate Min and Max will be 0."
End If
ElseIf wsName = "Test-8" Then
If rate_value < 50 Then
snapdownvol = 98
ElseIf rate_value = 50 Then
snapdownvol = 98
sweep_value = 49.8
sweep_value_max = 50.2
ElseIf rate_value = 100 Then
snapdownvol = 125
sweep_value = 99.8
sweep_value_max = 100.2
ElseIf rate_value = 200 Then
snapdownvol = 125
sweep_value = 199.4
sweep_value_max = 200.4
ElseIf rate_value > 200 Then
MsgBox "Rate Value for " & sysnum & " is greater than 200 kHz. Rate Min and Max will be 0."
End If
End If
发布于 2022-10-25 20:01:33
由于重复次数很多,我会选择Case Select:
Select Case rate_value
Case Is < 50
Select Case wsName
Case "Test-3"
snapdownvol = 95
Case "Test-6", "Test-8"
snapdownvol = 98
End Select
Case Is = 50
snapdownvol = 98
sweep_value = 49.8
sweep_value_max = 50.2
Case Is = 100
Select Case wsName
Case "Test-3"
snapdownvol = 110
Case "Test-6", "Test-8"
snapdownvol = 125
End Select
sweep_value = 99.8
sweep_value_max = 100.2
Case Is = 200
snapdownvol = 110
sweep_value = 199.4
sweep_value_max = 200.4
Case Is > 200
MsgBox "Rate Value for " & sysnum & " is greater than 200 kHz. Rate Min and Max will be 0."
End Select
https://stackoverflow.com/questions/74199166
复制相似问题