我的excel文件中有以下内容
§
编写以下函数
+----------+-------+---------------+
| Option | value | VisibleOption |
+----------+-------+---------------+
| Option#1 | | #Option5 |
| Option#2 | | #Option6 |
| Option#3 | 3 | #Option7 |
| Option#4 | 1200 | #Option8 |
+----------+-------+---------------+
现在,该函数返回以下内容
Private Sub CommandButton1_Click()
Dim i As Integer
Dim value_s As String
i = 2
Do Until IsEmpty(Cells(i, 1))
value_s = ActiveSheet.Cells(i, 2)
If value_s <> "" Then
Debug.Print "value_s is not empty"
ElseIf value_s = "1200" Then
Debug.Print "value_s contains a 1200"
Else
Debug.Print "print the rest"
End If
i = i + 1
Loop
End Sub
虽然它应该返回类似下面的东西,因为存在1200:
print the rest
print the rest
value_s is not empty
value_s is not empty
看来,ElseIf被跳过了。这里出了什么问题?
答案 0 :(得分:1)
我会写这样的ElseIf指令,我怀疑1200存储为数字,你将它与字符串&#34; 1200&#34;进行比较。这是不一样的。
ElseIf value_s = 1200 Then
答案 1 :(得分:1)
如果语句在第一次成功的IF之后关闭,那么在你的实例中,只有当值为空时它才会到达else,在这种情况下它会跳过它...所以它永远不会调用它。为了解决这个确切的例子,我会改变一下:
If value_s == "" Then
Debug.Print "print the rest"
ElseIf value_s = "1200" Then
Debug.Print "value_s contains a 1200"
Else
Debug.Print "value_s is not empty"
End If
更好的方法是:
Select Case value_s
Case ""
Debug.Print "print the rest"
Case "1200"
Debug.Print "value_s contains a 1200"
Case Else
Debug.Print "value_s is not empty"
End Select
在这种情况下,您可以根据需要添加任意数量的可能性。
答案 2 :(得分:0)
将此添加到您的循环中:
debug.print ActiveSheet.Name
debug.print value_s
您将在即时窗口中获得结果,您可以相应地进行修复。